基礎:字母表、字串與語言
空字串(empty string)
/ the symbol ε is the Greek letter epsilon, EP-sih-lon /
空字串是完全不含任何符號的字串,像你還沒打任何字就按下 Enter 所得到的空白行。它感覺像「沒有東西」,但在這門理論裡它是一個真實、定義明確的物件,正如數字零是一個真實的數,即使它什麼也數不到。我們需要替「寫下零個符號的結果」取個名字。
我們把空字串寫成 ε(epsilon);有些書改用 λ(lambda)。它的定義性質是長度為零:|ε| = 0。它在串接下也表現為「什麼都不做」的單位元素:把 ε 黏在任何字串 w 的任一側都不改變 w,所以 εw = wε = w,正如加 0 不改變一個數。每個字母表的字串集合都免費包含 ε,即使 ε 不含該字母表的任何符號。
幾乎每個初學者都被空字串絆倒過一次。第一,ε 不是字母表的符號,它是一個字串(那個沒有符號的字串)。第二,也更重要:空字串不等於空集合——ε 是某一個特定的字串,而 {}(空語言)是一個完全不含任何字串的集合。因此「恰好只含空字串」的語言 {ε} 與 {} 不同;這個確切的陷阱在下方有專門條目。
εa = a 且 aε = a。字串 ababa 可拆成 ε 接 ababa,或 ababa 接 ε。|ε| = 0。
ε 是串接的單位元素,是字串中相當於數字 0 的角色。
空字串 ε 不是空集合。ε 是單一個長度為 0 的字串;空集合 {} 是一個不含任何字串的語言。把兩者混淆是經典的初學者錯誤。
又称
另见