Markov algorithm

This is an old revision of this page, as edited by Tastyweather (talk | contribs) at 09:21, 22 February 2011. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A Markov algorithm is a string rewriting system that uses grammar-like rules to operate on strings of symbols. Markov algorithms have been shown to be Turing-complete, which means that they are suitable as a general model of computation and can represent any mathematical expression from its simple notation.

Refal is a programming language based on Markov algorithm.

The manga was adapted into two TV anime series produced by Toei Animation which aired on Fuji TV affiliates from 1984 through 1988, comprising a combined total of 152 episodes. Several films, OVAs, and video games had been produced as well, including a series of spin-offs centering around other characters from the original story.

Algorithm

The Rules is a sequence of pair of strings, usually presented in the form of patternreplacement. Some rules may be terminating.

Given an input string:

  1. Check the Rules in order from top to bottom to see whether any of the patterns can be found in the input string.
  2. If none is found, the algorithm stops.
  3. If one (or more) is found, use the first of them to replace the leftmost matching text in the input string with its replacement.
  4. If the applied rule was a terminating one, the algorithm stops.
  5. Return to step 1 and carry on.

Example

The following example shows the basic operation of a Markov algorithm.

Rules

  1. "A" -> "apple"
  2. "B" -> "bag"
  3. "S" -> "shop"
  4. "T" -> "the"
  5. "the shop" -> "my brother"
  6. "a never used" -> ."terminating rule"

Symbol string

"I bought a B of As from T S."

Execution

If the algorithm is applied to the above example, the Symbol string will change in the following manner.

  1. "I bought a B of apples from T S."
  2. "I bought a bag of apples from T S."
  3. "I bought a bag of apples from T shop."
  4. "I bought a bag of apples from the shop."
  5. "I bought a bag of apples from my brother."

The algorithm will then terminate.

Another Example

These rules give a more interesting example. They rewrite binary numbers to their unary counterparts. For example: 101 will be rewritten to a string of 5 consecutive bars.

Rules

  1. "|0" -> "0||"
  2. "1" -> "0|"
  3. "0" -> ""

Symbol string

"101"

Execution

If the algorithm is applied to the above example, it will terminate after the following steps.

  1. "0|01"
  2. "00||1"
  3. "00||0|"
  4. "00|0|||"
  5. "000|||||"
  6. "00|||||"
  7. "0|||||"
  8. "|||||"

References

  • Caracciolo di Forino, A. String processing languages and generalized Markov algorithms. In Symbol manipulation languages and techniques, D. G. Bobrow (Ed.), North-Holland Publ. Co., Amsterdam, The Netherlands, 1968, pp. 191-206.
  • Andrey Andreevich Markov (1903-1979) 1960. The Theory of Algorithms. American Mathematical Society Translations, series 2, 15, 1-14.