Escolar Documentos
Profissional Documentos
Cultura Documentos
Ordenao de dados 72 37 90 65 29 51 46 88 15
72 37
Ordenao topolgica 72 37
n
37 72 90 65 29 51 46 88 15
rvores de busca binria
37 72 90 29 65 46 51 15 88
Cdigo de Huffman 29 37 65 72 90 15 46 51 88
15 29 37 46 51 65 72 88 90
9
4 0 1
1 2 3
4
0 1
4 5 6 2 6
2 2 5
0 1 0 1 0 1
7 8 9 1 3 5 7 1 1 1 1 2 3
D E L R M A
AAoperao
operaode deteste
teste
Verifica
Verificase
seuma
umapermutao
permutaoPPest
estordenada.
ordenada.
Exerccio
Exerccio1.1.Ordenao
Ordenaoporporgerao
geraoeeteste
teste
Digite
Digiteeeteste
testeos
ospredicados
predicadosdefinidos
definidosno
noExemplo
Exemplo1.1.
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 5
Ordenao por trocas (bubble sort)
AAoperao
operaodedetroca
troca
Troca
Trocaas
asposies
posiesde
dedois
doiselementos
elementosconsecutivos
consecutivosque
queestejam
estejamfora
forade
deordem.
ordem.
17 46 51 39 25
toque
17 46 39 51 25
toque
17 39 46 51 25 O(n2)
toque
17 39 46 25 51
toque
17 39 25 46 51
toque
17 25 39 46 51
Exerccio
Exerccio2.2.Ordenao
Ordenaopor portrocas
trocas
Digite
Digiteeeteste
testeos
ospredicados
predicadosdefinidos
definidosno
noExemplo
Exemplo2.2.
Modifique
Modifiqueoopredicado
predicadobs/2 /2para
bs/2
bs
bs/2 paraque
queos
osestados
estadosda
dalista
listasejam
sejamexibidos
exibidosno
novdeo.
vdeo.
L : 46 51 39 17 25 A:
Para ordenar recursivamente uma insere
lista L usando insero: L : 51 39 17 25 A : 46
Comece com uma lista auxiliar insere
A vazia.
L : 39 17 25 A : 46 51
Insira o primeiro elemento de L
insere
em A, obtendo uma nova lista N.
L : 17 25 A : 39 46 51
Insira recursivamente os demais
elementos de L em N, obtendo a insere
lista ordenada Lo. L : 25 A : 17 39 46 51
L: A : 17 25 39 46 51
Exerccio
Exerccio3.3.Ordenao
Ordenaopor
porinsero
insero
Digite
Digiteos
ospredicados
predicadosdefinidos
definidosno
noExemplo
Exemplo22eeteste
testecom
comaaconsulta:
consulta:
??-- is([46,51,39,17,25],[],Lo).
is([46,51,39,17,25],[],Lo).
Modifique
Modifiqueoopredicado is/2de
predicadois/2 demodo
modoque
queos
osestados
estadosda
dalista
listaAAsejam
sejamexibidos.
exibidos.
72 65 90 29 37 51 88 46 15
lg n
72 90 37 65 29 51 46 88 15
72 37 90 65 29 51 46 88 15
72 37
n
72 37
37 72 90 65 29 51 46 88 15
37 72 90 29 65 46 51 15 88
O(n lg n)
29 37 65 72 90 15 46 51 88
15 29 37 46 51 65 72 88 90
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 12
Ordenao por intercalao: implementao
Exerccio
Exerccio4.4.Separao
Separaodos doselementos
elementos
Defina
Definaoopredicado separa(L,A,B), ,que
predicadosepara(L,A,B) quesepara
separaos
oselementos
elementosda
dalista
listaLLem
emduas
duas
listas
listasAAeeBB, ,cada
cadauma
umadelas
delascom
comaproximadamente
aproximadamenteoomesmo
mesmonmero
nmerode deelementos.
elementos.
Teste
Testecom
comaaconsulta:
consulta:??-- separa([72,51,65,88,90,46,29,15,37],A,B).
separa([72,51,65,88,90,46,29,15,37],A,B).
Exerccio
Exerccio5.5.Intercalao
Intercalaodosdoselementos
elementos
Defina
Definaoopredicado intercala(Ao,Bo,Lo), ,que
predicadointercala(Ao,Bo,Lo) queintercala
intercalaos
oselementos
elementosdas
daslistas
listas
ordenadas
ordenadasAo AoeeBo
Bopara
paraconstruir
construiruma
umanica
nicalista
listaordenada
ordenadaLoLo. .
Teste
Testecom
comaaconsulta:
consulta:??-- intercala([29,37,65,72,90],[15,46,51,88],Lo).
intercala([29,37,65,72,90],[15,46,51,88],Lo).
Exerccio
Exerccio6.6.Ordenao
Ordenaopor porintercalao
intercalao(merge
(mergesort)
sort)
Defina
Definaoopredicado (L,Lo), ,que
predicadoms(L,Lo)
msms(L,Lo)
ms(L,Lo) quetransforma
transformaaalista
listaLLem
emuma
umalista
listaordenada
ordenada
correspondente
correspondenteLoLo, ,usando
usandooomtodo
mtodode deordenao
ordenaopor porintercalao.
intercalao.
Teste
Testecom
comaaconsulta:
consulta:??-- ms([72,51,65,88,90,46,29,15,37],Lo).
ms([72,51,65,88,90,46,29,15,37],Lo).
ms
ms([72,51,65,88,90,46,29,15,37],Lo).
([72,51,65,88,90,46,29,15,37],Lo).
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 13
Ordenao por partio (quick sort)
AAoperao
operaode departio
partio
Dada
Dadaumaumalista L=[P|R], ,aaoperao
listaL=[P|R] operaode
departio
partiodistribui
distribuios
oselementos
elementosde deRRem
emduas
duas
listas
listasAAeeBBtais
taisque
queos
oselemento
elementode
deAAsejam
sejammenores
menoresou ouiguais
iguaisaaPPeeos
oselementos
elementosde
de
BBsejam
sejammaiores
maioresquequePP. .
51 65 46 29 15 37 88 90
46 29 15 37 65 90 n
29 15 37
15 37
15 37 n
15 29 37
15 29 37 46 65 90
Pior caso: O(n2)
15 29 37 46 51 65 88 90
Exerccio
Exerccio8.8.Concatenao
Concatenaode delistas
listas
Defina concatena(A,B,L), ,que
Definaconcatena(A,B,L) queconcatena
concatenaas
aslistas
listasAAeeBBpara
paraconstruir
construiraalista
listaLL. .
Teste
Testecom
comaaconsulta:
consulta:??-- concatena([15,29,37,46,51,65],[72,88,90],L).
concatena([15,29,37,46,51,65],[72,88,90],L).
Exerccio
Exerccio9.9.Ordenao
Ordenaopor porpartio
partio(quick
(quicksort)
sort)
Defina
Definaoopredicado (L,Lo), ,que
predicadoqs(L,Lo)
qsqs(L,Lo)
qs(L,Lo) quetransforma
transformaaalista
listaLLem
emuma
umalista
listaordenada
ordenada
correspondente
correspondenteLoLo, ,usando
usandooomtodo
mtodode deordenao
ordenaopor porpartio.
partio.
Teste
Testecom
comaaconsulta:
consulta:??-- qs([72,51,65,88,90,46,29,15,37],Lo).
qs([72,51,65,88,90,46,29,15,37],Lo).
qs
qs([72,51,65,88,90,46,29,15,37],Lo).
([72,51,65,88,90,46,29,15,37],Lo).
definio
implementao
Ordenao topolgica
Ordenao
Ordenaotopolgica
topolgica
Uma
Umaordenao
ordenaotopolgica
topolgicade deum umgrafo
grafoacclico G=(V,A)uma
acclicoG=(V,A) umaordem
ordemtotal
totalSSdos
dos
elementos
elementosde
deVVtal
talque
quese
se(v(vi,v,vj))A,
A,ento
entovvi precede
precedevvj em
emS.S.
i j i j
1 2 3
4 5 6
7 8 9
Ordena
Ordenao topol
topolgica: [3, 4, 1, 6, 5, 2, 7, 8, 9]
Exerccio
Exerccio10.
10.Ordenao
Ordenaotopolgica
topolgica
Digite
Digiteooprograma
programado
doExemplo
Exemplo44eefaa
faaaaconsulta:
consulta:
??-- ordtop(1,S).
ordtop(1,S).
ordtop
ordtop(1,S).
(1,S).
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 20
Ordenao topolgica
Exerccio
Exerccio11.
11.Exibio
Exibiode
detodas
todasasassolues
solues
Represente
Representeoografo
grafoaaseguir
seguireefaa
faaaaconsulta
consultaindicada.
indicada.
1 2 3 4
??-- forall(
forall((ordtop(2,S)
forall
forall( ordtop(2,S),
ordtop (2,S),, writeln(S)
(2,S)
ordtop(2,S)
(2,S), writeln(S))
writeln (S)))..
(S)
writeln(S)
(S))
Exerccio
Exerccio12.
12.Ordenao
Ordenaotopolgica
topolgicaversus
versuspermutao
permutao
Quando
Quandono
nohhrestries
restriesde
deordem
ordementre
entreososvrtices
vrticesdodografo,
grafo,aaordenao
ordenaotopolgica
topolgica
funciona
funcionacomo
comopermutao.
permutao.Para
Paraverificar
verificareste
estefato,
fato,represente
representeoografo
grafoaaseguir
seguireefaa
faa
aaconsulta
consultaindicada:
indicada:
1 2 3
??-- forall(
forall((ordtop(3,S)
forall
forall( ordtop(3,S),
ordtop (3,S),, writeln(S)
(3,S)
ordtop(3,S)
(3,S), writeln(S))
writeln (S)))..
(S)
writeln(S)
(S))
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 21
rvores de busca binria
definio
manipulao
rvores de busca binria
Uma
Umarvore binriaAA
rvorebinria
uma
umaestrutura
estruturacomposta
compostapor
pornnnsnstal
talque
quese n=0,dizemos
sen=0, dizemosqueque R
AAvazia
vazia(representada por##););caso
(representadapor casocontrrio:
contrrio:
existe
existeum
umnnespecial emAAdenominado
especialem denominadoraizraiz
os
osdemais
demaisns deAAso
nsde soorganizados
organizadosem emestruturas
estruturasdisjuntas:
disjuntas:
E D
uma
umasubrvore
subrvorebinria esquerdaEE
binriaesquerda
uma
umasubrvore
subrvorebinria direitaDD
binriadireita
4
Uma
Umarvore
rvorede
debusca binriaAA
buscabinria
umaumarvore
rvorebinria
binriavazia
vaziaou
ouuma
umaestrutura (R,E,D)tal
estruturann(R,E,D) talque:
que: 2 6
todo
todoelemento
elementoememEEmenor
menorououigual
igualaaRR
todo
todoelemento
elementoememDDmaior
maiorque
queRR 1 3 5 7
Exerccio
Exerccio13.
13.Criao
Criaode
dervore
rvorede debusca
buscabinria
binria
Digite
Digiteooprograma
programadodoExemplo
Exemplo5,5,faa
faaaaconsulta
consultaaaseguir
seguireedesenhe
desenheaarvore
rvoreobtida:
obtida:
??-- abb([3,5,1,0,4,2],A).
abb([3,5,1,0,4,2],A).
Exerccio
Exerccio14.
14.Exibio
Exibiodedervore
rvorede
debusca
buscabinria
binria
Complete
Completeooprograma
programadodoExemplo
Exemplo55com
comumumpredicado
predicadopara
paraexibir
exibiros
oselementos
elementosde
de
uma
umarvore
rvorede
debusca
buscabinria
binriaem
emordem
ordemcrescente.
crescente.
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 24
Cdigo de Huffman
definio
implementao
Cdigo de Huffman
OOcdigo
cdigodedeHuffman
Huffman
para
paraum
umtexto
textoTTuma
umaatribuio
atribuiodedecdigos
cdigosbinrios
binriosaos
aoscaracteres
caracteresde
deTTque
que
minimiza
minimizaoonmero
nmeromdio
mdiodedebits
bitspor
porcaractere.
caractere.
Exerccio
Exerccio15.
15.Frequncia
Frequnciados
doscaracteres
caracteres
Digite
Digiteooprograma
programado
doExemplo
Exemplo66eefaa
faaas
asconsultas
consultasaaseguir:
seguir:
??-- atom_chars(marmelada,S).
atom_chars(marmelada,S).
atom_chars
atom_chars(marmelada,S).
(marmelada,S).
??-- atom_chars(marmelada,S),
atom_chars(marmelada,S),
atom_chars (marmelada,S), freq(S,[],F).
atom_chars(marmelada,S), freq(S,[],F).
freq
freq(S,[],F).
(S,[],F).
Note
Noteque
queaalista
listade
defrequncias
frequnciasdos
doscaracteres
caracteresFFuma
umafloresta!
floresta!
Prof. Dr. Silvio do Lago Pereira DTI / FATEC-SP 27
Cdigo de Huffman
Exemplo
Exemplo7.7.Construo
Construoda
darvore
rvorede
deHuffman
Huffman
arvhuf([A],A)
arvhuf([A],A)
arvhuf ([A],A) :-
arvhuf([A],A) :--
::-
!!..
arvhuf([A1,A2|A],B)
arvhuf([A1,A2|A],B)
arvhuf ([A1,A2|A],B) :-
arvhuf([A1,A2|A],B) :--
::-
A1
A1 == nn(F1,_,_,_),
nn (F1,_,_,_),
A2 =
A2 = nn
n (F2,_,_,_),
n(F2,_,_,_),
F3
F3 isis F1F1 ++ F2,
F2,
sort([n
sort([n
sort ([n(F3,-
([n
sort([n([n (F3,--,A1,A2)|A],As),
(F3,
(F3,- ,A1,A2)|A],As),
arvhuf(As,B).
arvhuf(As,B).
arvhuf
arvhuf(As,B).
(As,B).
Exerccio
Exerccio15.
15.Construo
Construoda
darvore
rvorededeHuffman
Huffman
Digite
Digiteooprograma
programado
doExemplo
Exemplo77eefaa
faaas
asconsultas
consultasaaseguir:
seguir:
??-- atom_chars(marmelada,S),
atom_chars(marmelada,S),
atom_chars (marmelada,S), freq(S,[],F),
atom_chars(marmelada,S), freq(S,[],F),
freq (S,[],F), arvhuf(F,A).
freq(S,[],F), arvhuf(F,A).
Exerccio
Exerccio16.
16.Exibio
Exibiodos
doscdigos
cdigos
Digite
Digiteooprograma
programadodoExemplo
Exemplo88eefaa
faaas
asconsultas
consultasaaseguir:
seguir:
??-- atom_chars(marmelada,S),
atom_chars
atom_chars(marmelada,S),
(marmelada,S), freq(S,[],
atom_chars(marmelada,S), freq
freq(S,[],F),
(S,[],F),
(S,[],
freq(S,[], F), arvhuf(F,A),
(S,[],F), arvhuf(F,A), c
cc
cdigos(A,[]).
digos(A,[]).
Exerccio
Exerccio17.
17.Programa
Programaprincipal
principal
Defina
Definaoopredicado (T), ,que
predicadohuf(T)
huf(T)
huf
huf(T) queexibe
exibeos
oscdigos
cdigosde
deHuffman
Huffmanpara
paraootexto
textoTT: :
??-- huf(
huf(MARMELADA
MARMELADA'').
).
huf :-
new(F,frame('C
new(F,frame('C
(F,frame('Cdigos de Huffman')),
send(F,
send(F,append
(F,append,
append,new(D,
new(D,dialog
(D,dialog)),
dialog)),
send(D,
send(D,above
(D,above,
above,new(P,
new(P,picture
(P,picture)),
picture)),
send(P,
send(P,size
(P,size,
size,size(210,100)),
size(210,100)),
send(P,display,
send(P,display,new
(P,display,new(T,tabular)),
new(T,tabular)),
send(T,
send(T,border
(T,border,1),
border,1),
send(T,
send(T,rules
(T,rules,
rules,all),
all),
send(D,
send(D,append
(D,append,
append,new(I,
new(I,text_item
(I,text_item(texto))),
text_item(texto))),
send(D,
send(D,append
(D,append,
append,button(
button(ok,
ok,and(
and(and(
and(message(T,
message(T,clear
(T,clear),
clear),
message(@
message(@prolog
(@prolog,
prolog,huf,T,I
huf,T,I?
,T,I?selection)),
selection)),
message(I,
message(I,clear
(I,clear)))),
clear)))),
send(D,
send(D,append
(D,append,
append,button(sair,
button(sair,message
(sair,message(F,
message(F,destroy
(F,destroy))),
destroy))),
send(F,open).
send(F,open).
freq([],F1,F2)
freq([],F1,F2) :-
:-
!,
sort(F1,F2).
sort(F1,F2).
freq([
freq([S|Ss
([S|Ss],F1,F3)
S|Ss],F1,F3) :-
:-
ins(S,F1,F2),
ins(S,F1,F2),
freq(
freq(Ss,F2,F3).
Ss,F2,F3).
ins(X,[],[n
ins(X,[],[n
(X,[],[n(1,X,#,#)]) :-
:- !.
ins(X,[n
ins(X,[n
(X,[n(F,X,#,#)|R],[n
(F,X,#,#)|R],[n(G,X,#,#)|R]) :
:-
- !, G is F+1.
ins(X,[n
ins(X,[n
(X,[n(F,Y,#,#)|R],[n
(F,Y,#,#)|R],[n(F,Y,#,#)|N]) :-
:- ins
ins(X,R,N).
(X,R,N).