Substring

"Saite"ist ein Substring von"Substring"

Im Formale Sprachtheorie und Informatik, a Substring ist eine zusammenhängende Folge von Figuren innerhalb eines Saite. Zum Beispiel, "das Beste aus"ist ein Substring von"Es war das beste Mal". Im Gegensatz, "Itwastimes"ist eine Untersuchung von"Es war das beste Mal", aber kein Substring.

Präfixe und Suffixe sind besondere Fälle von Substrings. Ein Präfix einer Zeichenfolge ist ein Substring von das geschieht zu Beginn von ; Ebenso ein Suffix einer Saite ist ein Substring, das am Ende von vorkommt .

Die Liste aller Substrings der Zeichenfolge "Apfel" wäre "Apfel","Appl","pple","App","ppl","ple","AP","pp","Pl","Le","a","p","l","e", "" (beachten Sie das leerer String Am Ende).

Substring

Ein Faden ist ein Substring (oder Faktor)[1] einer Saite Wenn es zwei Saiten gibt und so dass . Insbesondere ist die leere Zeichenfolge ein Substring jeder Saite.

Beispiel: Die Zeichenfolge Ana ist gleich Substrings (und Untersequenzen) von Banane bei zwei verschiedenen Offsets:

Banane ||||| ana || ||| Ana

Das erste Ereignis wird mit erhalten b und n / A, während das zweite Ereignis mit erhalten wird mit Verbot und die leere Saite sein.

Eine Substring einer Zeichenfolge ist a Präfix von a Suffix der Saite und gleichzeitig ein Suffix eines Präfixes; zum Beispiel, Nan ist ein Präfix von Nana, was wiederum ein Suffix von ist Banane. Wenn ist ein Substring von , es ist auch ein Subsequenz, was ein allgemeineres Konzept ist. Das Vorkommen eines bestimmten Musters in einer bestimmten Zeichenfolge kann mit a gefunden werden String -Suchalgorithmus. Die längste Saite zu finden, die einem Substring von zwei oder mehr Zeichenfolgen entspricht Das längste übliche Substringproblem. In der mathematischen Literatur werden auch Substrings genannt Unterwörter (in Amerika) oder Faktoren (in Europa).

Präfix

Ein Faden ist ein Präfix[1] einer Saite Wenn es eine Zeichenfolge gibt so dass . EIN richtiges Präfix einer Zeichenfolge ist nicht gleich der Zeichenfolge selbst;[2] Einige Quellen[3] Beschränken Sie außerdem ein ordnungsgemäßes Präfix, um nicht leer zu sein. Ein Präfix kann als Sonderfall eines Substrings angesehen werden.

Beispiel: Die Zeichenfolge Verbot ist gleich einem Präfix (und Substring und Subsequenz) der Zeichenfolge Banane:

Banane ||| Verbot

Das quadratische Teilmenschsymbol wird manchmal verwendet, um ein Präfix anzuzeigen, damit das bezeichnet das ist ein Präfix von . Dies definiert a binäre Beziehung auf Saiten, die genannt Präfixbeziehung, was eine bestimmte Art von ist Präfixbestellung.

Suffix

Ein Faden ist ein Suffix[1] einer Saite Wenn es eine Zeichenfolge gibt so dass . EIN richtiges Suffix einer Zeichenfolge ist nicht gleich der Zeichenfolge selbst. Eine eingeschränktere Interpretation ist, dass sie auch nicht leer ist.[1] Ein Suffix kann als Sonderfall eines Substrings angesehen werden.

Beispiel: Die Zeichenfolge Nana ist gleich einem Suffix (und Substring und Subsequenz) der Zeichenfolge Banane:

Banane |||| Nana

A Suffixbaum Für eine Zeichenfolge ist a Trie Datenstruktur Das repräsentiert alle Suffixe. Suffixbäume haben eine große Anzahl von Anwendungen in String -Algorithmen. Das Suffix -Array ist eine vereinfachte Version dieser Datenstruktur, die die Startpositionen der Suffixe in alphabetisch sortierter Reihenfolge auflistet; Es hat viele der gleichen Anwendungen.

Grenze

Ein Rand ist Suffix und Präfix derselben Zeichenfolge, z. "Bab" ist eine Grenze von "Babab" (und auch von "Pavian, der einen Kebab isst").

Superstring

A Superstring eines endlichen Satzes von Saiten ist eine einzelne Zeichenfolge, die jede Zeichenfolge in enthält als Substring. Zum Beispiel, ist eine Übersteuerung von , und ist kürzer. Alle Mitglieder von verkettet werden in willkürlicher Reihenfolge erhält immer eine triviale Überstimmung von . Das Finden von Superstrings, deren Länge so klein wie möglich ist, ist ein interessanteres Problem.

Eine Zeichenfolge, die jede mögliche Permutation eines bestimmten Zeichensatzes enthält Superpermutation.

Siehe auch

Verweise

  1. ^ a b c Lothaire, M. (1997). Kombinatorik auf Wörtern. Cambridge: Cambridge University Press. ISBN 0-521-59924-5.
  2. ^ Kelley, Dean (1995). Automaten und formelle Sprachen: Eine Einführung. London: Prentice-Hall International. ISBN 0-13-497777-7.
  3. ^ Gusfield, Dan (1999) [1997]. Algorithmen für Zeichenfolgen, Bäume und Sequenzen: Informatik und Computerbiologie. USA: Cambridge University Press. ISBN 0-521-58519-8.