1 基本概念

文字列は、記号や文字を順序づけて並べた列であり、情報を表したり、計算の対象として扱ったりするための基本的な単位である。数学情報科学では、個々の要素そのものよりも、並び方とその規則性に注目して定義されることが多い。可読な文章だけでなく、記号列、コード列、データ列も広い意味で文字列に含めて扱われる。

1.1 定義

形式的には、文字列はある集合の要素を有限回、順序を保って並べたものとして定義される。各要素は「文字」と呼ばれ、文字列全体は配列された記号の列として表現される。形式言語理論では、文字列は意味内容よりも構造が重視され、演算や判定の対象となる。

1.2 記号とアルファベット

文字列を構成する基本要素の集合をアルファベットという。アルファベットは、英字や数字のような具体的な文字集合に限らず、抽象的な記号集合としても定義できる。文字列はこのアルファベットの要素を用いて作られ、同じアルファベットからでも多様な列が生成される。

1.3 長さ

文字列の長さは、含まれる文字の個数である。長さは文字列の基本的な量的属性であり、比較分類アルゴリズム設計に広く利用される。有限文字列では長さは自然数で表され、無限列を扱う理論では別の枠組みが必要になる。

1.4 空文字列

空文字列は、文字を一つも含まない文字列で、長さは0である。連結演算における単位元として機能し、理論上きわめて重要である。記法は分野によって異なるが、いずれも「要素を含まない列」を表す点は共通している。

2 数学的性質

文字列は、単なる並びではなく、いくつかの演算と関係を通じて体系的に扱われる。これにより、文字列同士の比較や変換、構造の解析が可能になる。抽象代数学や理論計算機科学では、こうした性質が基礎的な研究対象となる。

2.1 連結

連結は、二つの文字列を順番に接続して一つの文字列を作る操作である。たとえば、列の末尾に別の列を続けることで新しい列が得られる。連結は結合的であり、空文字列を単位元とするため、形式的な演算として扱いやすい。

2.2 部分文字列

部分文字列は、ある文字列の連続した一部分として現れる文字列である。位置と長さによって定まるため、前後関係や局所的な構造の分析に向いている。検索照合パターン認識などの場面で重要な概念である。

2.3 接頭辞と接尾辞

接頭辞は、文字列の先頭から取り出した部分列であり、接尾辞は末尾側から見た部分列である。いずれも部分文字列の特殊な形で、逐次処理や逐語的な解析で頻繁に使われる。文字列の構造を段階的に調べる際の基本単位となる。

2.4 反転

反転は、文字列の並び順を逆にする操作である。元の先頭が末尾に移り、末尾が先頭に移るため、順序依存の性質を確認するのに役立つ。言語理論や組合せ論では、反転後の列が持つ特徴を調べることがある。

3 形式言語における文字列

形式言語理論では、文字列は言語を構成する最小の記述単位として扱われる。文法や認識装置は、文字列の生成可能性や受理可能性を定義するための枠組みである。したがって、文字列の理解は形式的な言語研究の中心に位置する。

3.1 文法との関係

文法は、どの文字列が正しい形であるかを規則によって定める。開始記号から規則を適用し、最終的に文字列を得ることで、その言語の構成が説明される。文法は、文字列の生成過程と構造を結びつける役割を持つ。

3.2 生成と認識

生成は、規則に従って文字列を作り出す過程であり、認識は与えられた文字列がその規則系に属するかを判定する過程である。両者は相補的で、同じ形式体系を別の方向から捉えている。理論上は、生成できる列と認識できる列の一致が重要になる。

3.3 正規表現

正規表現は、文字列の集合を簡潔に表す記法である。特定の文字や繰り返し、選択などを組み合わせることで、検索条件や形式言語の記述に用いられる。実装面では、文字列照合や抽出の効率化に広く利用される。

3.4 オートマトン理論

オートマトン理論では、文字列は状態遷移を引き起こす入力として解釈される。オートマトンは、入力列を一文字ずつ読み取り、受理するかどうかを決定する。文字列の構造と計算機械の振る舞いを対応づける点に、この理論の特徴がある。

4 応用

文字列は、理論的な対象であると同時に、実際の情報処理でも広く用いられる。データの保存、変換、検査、検索の多くは文字列処理として表現できる。応用分野ごとに役割は異なるが、順序をもつ記号列としての性質が共通の基盤になる。

4.1 情報科学

情報科学では、文字列はデータ表現の基本形式の一つである。ファイル名、識別子、メッセージ、ログなど、多様な情報が文字列として扱われる。比較、探索、圧縮、整形といった処理の多くが文字列操作に依存している。

4.2 プログラミング言語

プログラミング言語では、文字列はリテラル、変数値、出力対象として重要な型を構成する。文字列の結合、切り出し、置換は日常的な操作であり、入出力や文字処理の基盤となる。言語処理系でも、ソースコード自体が文字列として解析される。

4.3 暗号理論

暗号理論では、平文、暗号文、鍵材料などが文字列として表されることが多い。固定長・可変長の列を安全に扱うには、符号化や誤り検出、乱数生成との整合が必要になる。文字列の構造は、暗号方式の設計と解析に直接関わる。

4.4 自然言語処理

自然言語処理では、文章や単語を文字列として扱い、分割統計化、解析を行う。形態素解析、検索、機械翻訳、分類などの工程では、文字列の分節や対応付けが重要になる。人間の言語を計算可能な形に落とし込むうえで、文字列は不可欠な中間表現である。

</INTERNAL_LINK_CANDIDATES> アルファベット(文字列を構成する記号集合) 空文字列(文字を含まない長さ0の文字列) 連結(2つの文字列を順に接続する操作) 部分文字列(連続した一部分として現れる文字列) 接頭辞(先頭から取り出した部分列) 接尾辞(末尾側から見た部分列) 反転(文字列の順序を逆にする操作) 形式言語(規則に従う文字列の集合として定義される言語) 文法(文字列の生成規則を与える体系) 生成(規則に従って文字列を作ること) 認識(与えられた文字列が規則系に属するかを判定すること) 正規表現(文字列集合を簡潔に表す記法) オートマトン(入力列に応じて状態遷移する計算模型) 状態遷移(入力により機械の状態が変わること) 情報科学(文字列をデータ表現として扱う分野) プログラミング言語(文字列を主要なデータ型として扱う言語体系) 文字列リテラル(ソースコード中で文字列を表す表記) 暗号文(暗号化された文字列)