Escolar Documentos
Profissional Documentos
Cultura Documentos
Aula 2: Linguagens
DAINF-UTFPR Prof. Ricardo Dutra da Silva
Definição 2.2. Uma string sobre um alfabeto Σ é uma sequência de elementos de Σ jus-
tapostos.
Exemplo 2.2
Definição 2.3. A string nula é a string que não contém nenhum elemento. Denotaremos
a string nula por λ3 .
1
Aqui estamos falando do alfabeto que usado para escrever este texto. O alfabeto da lı́ngua portuguesa.
Não confundir com o alfabeto da Definição 2.1 ou do Exemplo 2.1.
2
Este sim é o alfabeto da Definição 2.1.
3
É comum encontrar em alguns textos a string nula representada pelo sı́mbolo .
1
2 Aula 2: Linguagens
O conjunto Σ∗ de todas as strings sobre um alfabeto pode ser definido a partir da string
nula por operações de justaposição de elementos do alfabeto Σ.
Definição 2.4. Seja Σ um alfabeto. O conjunto Σ∗ de strings sobre o alfabeto Σ, é definido
recursivamente da seguinte maneira:
Base: λ ∈ Σ∗ .
λ ∈ Σ∗ .
λ1 = 1 ∈ Σ∗ .
10 ∈ Σ∗ .
10 ∈ Σ∗ e 0 ∈ Σ, então 100 ∈ Σ∗ ;
100 ∈ Σ∗ e 1 ∈ Σ, então 1001 ∈ Σ∗ ;
1001 ∈ Σ∗ e 1 ∈ Σ, então 10011 ∈ Σ∗ .
Definição 2.5. O tamanho de uma string w, denotado por |w|, é o número de elementos
na string.
Exemplo 2.4
As strings λ, ca e 000101, possuem tamanhos
|λ| = 0,
|ca| = 2,
|000101| = 6.
Aula 2: Linguagens 3
Exemplo 2.5
Seja o alfabeto Σ = {a, b, c}. São elementos de Σ∗ :
Strings de tamanho 0: λ.
Strings de tamanho 1: a, b, c.
Strings de tamanho 2: aa, ab, ac, ba, bb, bc, ca, cb, cc.
...
Σ∗ = Σ0 ∪ Σ1 ∪ Σ2 ∪ . . .
Σ+ = Σ1 ∪ Σ2 ∪ . . .
ou Σ+ = Σ∗ − {λ}.
A concatenação de duas strings é a operação que “cola” uma string no final da outra.
Definição 2.7. Dadas as strings u, v ∈ Σ∗ . A concatenação de u e v, escrita uv, é definida
como:
Passo recursivo: Seja v uma string de tamanho |v| = n > 0. Então, v = wa, para
alguma string w de tamanho n − 1 e a ∈ Σ, e uv = (uw)a.
Exemplo 2.7
Dadas as strings u = ab, v = ca e w = bb.
uv = abca
vw = cabb
(uv)w = u(vw) = abcabb.
4 Aula 2: Linguagens
Expoentes são usados para abreviar a concatenação de uma string com ela mesma, desta
forma, wn significa n concatenações da string w.
Exemplo 2.8
Dadas strings v = a e w = 01:
v 5 = a5 = aaaaa
w4 = (01)4 = 01010101.
Passo recursivo: se |w| = n > 0. Então, w = va, para alguma string v de tamanho
n − 1 e a ∈ Σ, e wR = av R .
Exemplo 2.9
Dada a string w = abcabb temos que
wR = (abcab R
| {z } b) = b(abcab)
R
(passo recursivo)
v
wR = b(abca R
|{z} b) = bb(abca)
R
(passo recursivo)
v
wR = bb(|{z}
abc a)R = bba(abc)R (passo recursivo)
v
R
ab c)R = bbac(ab)R
w = bba(|{z} (passo recursivo)
v
wR = bbac(|{z}
a b)R = bbacb(a)R (passo recursivo)
v
wR = bbacb(|{z}
λ a)R = bbacba(λ)R (passo recursivo)
v
wR = bbacba(λ)R = bbacbaλ (base)
wR = bbacba
A especificação de uma linguagem requer uma descrição não ambı́gua das strings que
compõem a linguagem.
Exemplo 2.10
Dado Σ = {a, b, c, . . . , z} são linguagens sobre Σ:
Exemplo 2.11
Dado Σ = {0, 1} são linguagens sobre Σ: