You are on page 1of 13

L(CSG)= { anbncn : n 1}

CET089 Teoria da Computao


Prof. Csar Alberto Bravo Pariente
UESC 2015.1
L(CSG0)= { anbncn : n 1}
p0 : SaSBC
p1 : S abC
p2 : CB BC
p3 : bB bb
p4 : bC bc
p5 : cC cc
L(CSG1)= { anbncn : n 1}
G0 G1 : Pa, Qb, Rc.
p0 : SaSBC p0 : S PSBC
p1 : S abC p1 : S PQC
p2 : CB BC p2 : CB BC
p3 : bB bb p3 : QB QQ
p4 : QC Qc
p4 : bC bc
p5 : RC RR
p5 : cC cc
p6 : Pa
p7 : Qb
p8 : Rc
L(CSGKNF2)= { anbncn : n 1}
G1 : Pa, Qb, Rc. G2 : KNF
p0 : S PSBC p0 : S PD
p1 : D SE
p1 : S PQC p2 : E BC
p2 : CB BC p3 : S PF
p3 : QB QQ p4 : F QC
p5 : CB BC
p4 : QC QR p6 : QB QQ
p5 : RC RR p7 : QC QR
p6 : Pa p8 : RC RR
p9 : Pa
p7 : Qb
p10 : Qb
p8 : Rc p11 : Rc
Descriptional Complexity
Var Symb Prod
G0 4 3 5
G1 7 3 8
G2 10 3 11
Time Complexity (Steps to MaxLengh Ratio)
Steps G0 SLR0 G1 SLR1 G2 SLR2
7
9
11
13
16
32
64
128
Implementao Ruby
$: << "C:/ruby teoria/lab/05/gsc"
require 'GramaticaSensivelContexto'

gramSensivContex = GramaticaSensivelContexto.new()

gramSensivContex.adicionarProducao( {"S" => ["aSBC", "aBC"] } )


gramSensivContex.adicionarProducao( {"CB" => ["BC"] } )
gramSensivContex.adicionarProducao( {"aB" => ["ab"] } )
gramSensivContex.adicionarProducao( {"bB" => ["bb"] } )
gramSensivContex.adicionarProducao( {"bC" => ["bc"] } )
gramSensivContex.adicionarProducao( {"cC" => ["cc"] } )

derivacoes = gramSensivContex.derivar( "S", 7 )

derivacoes.each do |sentencas|
sentencas.each do |w, substituicoes|
puts "#{w.inspect()}=>#{substituicoes.inspect()}"
end
end
$: << "C:/ruby teoria/lab/05/gsc"
Implementao Ruby
require 'GramaticaSensivelContexto'

gramSensivContex = GramaticaSensivelContexto.new()

gramSensivContex.adicionarProducao( {"S" => ["aSBC", "aBC"] } )


gramSensivContex.adicionarProducao( {"CB" => ["BC"] } )
gramSensivContex.adicionarProducao( {"aB" => ["ab"] } )
gramSensivContex.adicionarProducao( {"bB" => ["bb"] } )
gramSensivContex.adicionarProducao( {"bC" => ["bc"] } )
gramSensivContex.adicionarProducao( {"cC" => ["cc"] } )

derivacoes = gramSensivContex.derivar( "S", 7 )

derivacoes.each do |sentencas|
sentencas.each do |w, substituicoes|
puts "#{w.inspect()}=>#{substituicoes.inspect()}"
end
end
L(GSC) = { anbncn : n 1 }
p0 : SaSBC
p1 : S abC
p2 : CB BC
p3 : bB bb
p4 : bC bc
p5 : cC cc
Derivao de: abc
Passo de derivao Produo
"S"=>["aSBC", "aBC"]
"aSBC"=>["aaSBCBC", "aaBCBC"] p0 : SaSBC
"aBC"=>["abC"] p1 : S abC
"aaSBCBC"=>["aaaSBCBCBC", "aaaBCBCBC", "aaSBBCC"]
"aaBCBC"=>["aabCBC", "aaBBCC"]
"abC"=>["abc"] p4 : bC bc
Derivao de: aabbcc (63 passos)
"S"=>["aSBC", "aBC"]
"aSBC"=>["aaSBCBC", "aaBCBC"]
"aBC"=>["abC"]
"aaSBCBC"=>["aaaSBCBCBC", "aaaBCBCBC", "aaSBBCC"]
"aaBCBC"=>["aabCBC", "aaBBCC"]
"abC"=>["abc"]
"aaaSBCBCBC"=>["aaaaSBCBCBCBC", "aaaaBCBCBCBC", "aaaSBBCCBC"]
"aaaBCBCBC"=>["aaabCBCBC", "aaaBBCCBC"]
"aaSBBCC"=>["aaaSBCBBCC", "aaaBCBBCC"]
"aabCBC"=>["aabBCC", "aabcBC"]
"aaBBCC"=>["aabBCC"]
"abc"=>[]
"aaaaSBCBCBCBC"=>["aaaaaSBCBCBCBCBC", "aaaaaBCBCBCBCBC", "aaaaSBBCCBCBC"]
"aaaaBCBCBCBC"=>["aaaabCBCBCBC", "aaaaBBCCBCBC"]
"aaaSBBCCBC"=>["aaaaSBCBBCCBC", "aaaaBCBBCCBC", "aaaSBBCBCC"]
"aaabCBCBC"=>["aaabBCCBC", "aaabcBCBC"]
"aaaBBCCBC"=>["aaabBCCBC", "aaaBBCBCC"]
"aaaSBCBBCC"=>["aaaaSBCBCBBCC", "aaaaBCBCBBCC", "aaaSBBCBCC"]
"aaaBCBBCC"=>["aaabCBBCC", "aaaBBCBCC"]
"aabBCC"=>["aabbCC"]
"aabcBC"=>[]
"aaaaaSBCBCBCBCBC"=>["aaaaaaSBCBCBCBCBCBC", "aaaaaaBCBCBCBCBCBC", "aaaaaSBBCCBCBCBC"]
"aaaaaBCBCBCBCBC"=>["aaaaabCBCBCBCBC", "aaaaaBBCCBCBCBC"]
"aaaaSBBCCBCBC"=>["aaaaaSBCBBCCBCBC", "aaaaaBCBBCCBCBC", "aaaaSBBCBCCBC"]
"aaaabCBCBCBC"=>["aaaabBCCBCBC", "aaaabcBCBCBC"]
"aaaaBBCCBCBC"=>["aaaabBCCBCBC", "aaaaBBCBCCBC"]
"aaaaSBCBBCCBC"=>["aaaaaSBCBCBBCCBC", "aaaaaBCBCBBCCBC", "aaaaSBBCBCCBC"]
"aaaaBCBBCCBC"=>["aaaabCBBCCBC", "aaaaBBCBCCBC"]
"aaaSBBCBCC"=>["aaaaSBCBBCBCC", "aaaaBCBBCBCC", "aaaSBBBCCC"]
"aaabBCCBC"=>["aaabBCBCC", "aaabbCCBC"]
"aaabcBCBC"=>["aaabcBBCC"]
"aaaBBCBCC"=>["aaabBCBCC", "aaaBBBCCC"]
"aaaaSBCBCBBCC"=>["aaaaaSBCBCBCBBCC", "aaaaaBCBCBCBBCC", "aaaaSBBCCBBCC"]
"aaaaBCBCBBCC"=>["aaaabCBCBBCC", "aaaaBBCCBBCC"]
"aaabCBBCC"=>["aaabBCBCC", "aaabcBBCC"]
"aabbCC"=>["aabbcC"]
"aaaaaaSBCBCBCBCBCBC"=>["aaaaaaaSBCBCBCBCBCBCBC", "aaaaaaaBCBCBCBCBCBCBC", "aaaaaaSBBCCBCBCBCBC"]
"aaaaaaBCBCBCBCBCBC"=>["aaaaaabCBCBCBCBCBC", "aaaaaaBBCCBCBCBCBC"]
"aaaaaSBBCCBCBCBC"=>["aaaaaaSBCBBCCBCBCBC", "aaaaaaBCBBCCBCBCBC", "aaaaaSBBCBCCBCBC"]
"aaaaabCBCBCBCBC"=>["aaaaabBCCBCBCBC", "aaaaabcBCBCBCBC"]
"aaaaaBBCCBCBCBC"=>["aaaaabBCCBCBCBC", "aaaaaBBCBCCBCBC"]
"aaaaaSBCBBCCBCBC"=>["aaaaaaSBCBCBBCCBCBC", "aaaaaaBCBCBBCCBCBC", "aaaaaSBBCBCCBCBC"]
"aaaaaBCBBCCBCBC"=>["aaaaabCBBCCBCBC", "aaaaaBBCBCCBCBC"]
"aaaaSBBCBCCBC"=>["aaaaaSBCBBCBCCBC", "aaaaaBCBBCBCCBC", "aaaaSBBBCCCBC"]
"aaaabBCCBCBC"=>["aaaabBCBCCBC", "aaaabbCCBCBC"]
"aaaabcBCBCBC"=>["aaaabcBBCCBC"]
"aaaaBBCBCCBC"=>["aaaabBCBCCBC", "aaaaBBBCCCBC"]
"aaaaaSBCBCBBCCBC"=>["aaaaaaSBCBCBCBBCCBC", "aaaaaaBCBCBCBBCCBC", "aaaaaSBBCCBBCCBC"]
"aaaaaBCBCBBCCBC"=>["aaaaabCBCBBCCBC", "aaaaaBBCCBBCCBC"]
"aaaabCBBCCBC"=>["aaaabBCBCCBC", "aaaabcBBCCBC"]
"aaaaSBCBBCBCC"=>["aaaaaSBCBCBBCBCC", "aaaaaBCBCBBCBCC", "aaaaSBBCBCBCC"]
"aaaaBCBBCBCC"=>["aaaabCBBCBCC", "aaaaBBCBCBCC"]
"aaaSBBBCCC"=>["aaaaSBCBBBCCC", "aaaaBCBBBCCC"]
"aaabBCBCC"=>["aaabBBCCC", "aaabbCBCC"]
"aaabbCCBC"=>["aaabbCBCC", "aaabbcCBC"]
"aaabcBBCC"=>[]
"aaaBBBCCC"=>["aaabBBCCC"]
"aaaaaSBCBCBCBBCC"=>["aaaaaaSBCBCBCBCBBCC", "aaaaaaBCBCBCBCBBCC", "aaaaaSBBCCBCBBCC"]
"aaaaaBCBCBCBBCC"=>["aaaaabCBCBCBBCC", "aaaaaBBCCBCBBCC"]
"aaaaSBBCCBBCC"=>["aaaaaSBCBBCCBBCC", "aaaaaBCBBCCBBCC", "aaaaSBBCBCBCC"]
"aaaabCBCBBCC"=>["aaaabBCCBBCC", "aaaabcBCBBCC"]
"aaaaBBCCBBCC"=>["aaaabBCCBBCC", "aaaaBBCBCBCC"]
"aabbcC"=>["aabbcc"]
Derivao de: aabbcc (63 passos)
Passo de derivao Pr.
"S"=>["aSBC", "aBC"] Ex.
"aSBC"=>["aaSBCBC", "aaBCBC"] Ex.
"aBC"=>["abC"] Ex.
...
"aaaaSBBCCBBCC"=>["aaaaaSBCBBCCBBCC", "aaaaaBCBBCCBBCC", "aaaaSBBCBCBCC"] Ex.
"aaaaBBCCBBCC"=>["aaaabBCCBBCC", "aaaaBBCBCBCC"] Ex.
"aabbcC"=>["aabbcc"] Ex.
Attached files
This presentation:
CSG-anbncn.pptx
CSG-anbncn.pdf
Ruby scripts:
CSG-anbncn.rb
Execution traces:
CSG-anbncn???steps.txt

You might also like