形式言語理論では、アルファベット(終端記号と非終端記号の文脈では語彙と呼ばれることが多い)は、分割不可能な記号/文字/グリフの空でない集合であり、[ 1 ]通常は文字、文字、数字、音素、あるいは単語を表すものと考えられています。[ 2 ] [ 3 ]この定義は、論理学、数学、コンピュータ科学、言語学など、さまざまな分野で使用されています。アルファベットは任意の濃度(「サイズ」)を持つことができ、その目的に応じて、有限(例:「a」から「z」までの文字のアルファベット)、可算(例:)、または数えられない名詞(例:)
アルファベット上の文字列(「単語」または「文」とも呼ばれる)は、アルファベットセットの記号のシーケンスとして定義されます。 [ 4 ]例えば、小文字の「a」から「z」までのアルファベットを使用して「iceberg」のような英単語を形成できますが、大文字と小文字の両方のアルファベットを使用して「Wikipedia」のような固有名詞を形成することもできます。一般的なアルファベットは、バイナリアルファベットである{0,1}であり、「00101111」はバイナリ文字列の例です。無限の記号のシーケンスも考慮することができます(オメガ言語を参照)。
文字列は多くの場合、記号の連結として記述されますが、この表記規則を使用する場合、この表記が曖昧にならないように、アルファベット内の記号を制限することが実際上便利です。たとえば、2つの要素からなるアルファベットが {00,0} の場合、連結形式で「000」と記述された文字列は、3 つの「0」記号のシーケンスなのか、「00」の後に「0」が続くのか、または「0」の後に「00」が続くのかが不明瞭なため、曖昧です。ただし、これは文字列を記述するための表記法の制限であり、文字列の根本的な定義の制限ではありません。任意の有限集合と同様に、{00,0} をアルファベットとして使用でき、その文字列は、要素をコンマで区切る別の表記規則で曖昧さなく記述できます。0,00 ≠ 0,0,0 ≠ 00,0。
定義によれば、形式言語のアルファベット以上セットはこれは、空でない任意の記号の集合であり、その中のすべての文字列は構築されます。たとえば、セット正式な言語のアルファベットになり得るつまり、「C プログラミング言語のすべての変数識別子」という意味です。アルファベットのすべての記号を使用する必要はありません。その弦のために。
アルファベットが与えられた長さ のすべての文字列の集合アルファベット順によって示されますセットすべての有限弦(長さに関係なく)は、クリーネスター演算子によって次のように表されます。また、クリーネ閉包とも呼ばれる。表記法アルファベット上のすべての無限数列の集合を示す、 そしてセットを示します有限または無限のすべての数列。
例えば、バイナリアルファベット{0,1}を使用すると、文字列ε、0、1、00、01、10、11、000などはすべてアルファベットのクリーネ閉包に含まれます(εは空文字列を表します)。
アルファベットは、形式言語、オートマトン、半オートマトンの使用において重要です。決定性有限オートマトン(DFA)などのオートマトンインスタンスを定義する場合、ほとんどの場合、オートマトンへの入力文字列を構築するためのアルファベットを指定する必要があります。これらのアプリケーションでは、アルファベットは通常有限集合である必要がありますが、それ以外の制約はありません。
文字列処理アルゴリズムの一部としてオートマトン、正規表現、または形式文法を使用する場合、アルファベットは、これらのアルゴリズムによって処理されるテキストの文字セット、または文字セットから許容される文字のサブセットであると想定できます。
アルファベットとは
、空でない有限集合であり
、
その要素は
記号
または
文字と呼ばれます。
順ここで言う「空でない記号の集合」とは、空でない記号の集合のことです。
語彙(またはアルファベット)Vは、記号と呼ばれる要素からなる有限かつ空でない集合です。V上の単語(または文)は、Vの要素からなる有限長の文字列です。
𝗔 が
アルファベット
である場合、つまり、𝐬 ∈ 𝗔 の要素が記号または少なくとも名前付き記号である場合、シーケンス (𝐬1
,
...,𝐬
n
)∈𝗔
n
は 𝐬
1
···𝐬
nと書かれ、𝗔 上の
文字列
または
単語
と呼ばれます
。