Você está na página 1de 169
beech: lly baht fine retiaintnaanaaais ra) yn eae oR ee ere el DE DADOS E SEUS ALGORITMOS Jayme Luiz Szwarefiter lian Markenzes Dice ege eer es eae E eM ene ts Te eco eNO | ee oe Teele sh a tolerant et (Oeil er Me eed iene ae eM tte et Ue Ue lalate ce aad dees eal ieee crores ecm ecm ec Letras, eee sieen sen ie telat wee trie reticent tee Cen ee eae eee tana Bes Conia ait eedecred Veet ain cia (eel iat fees UN Re Greece ont cite et Niotstcted Meter ree erated ali Oe Ms eae alta rca ot em Uecker tet pL 5 eo eee ae et er ee we en eee see Cee hole Rss Reria ites wags eee eal at Pie rei cicutes tree ere CMinE re, peed ete i Center) Farad s sn nl ESTRUTURAS DE DADOS E SEUS ALGORITMOS al : CONHEGA TAMBEM us etree remuasces, Gets Ptr sree es fewecnennsccer throne Het Ae Lpeoitis—emetein, been: | rane lcvien AMcrelardice tmp fscreracescns sim Pet ey AMAARA leit tapereenacte ave fence srr meets en Jecrwrzntaes 9 PASCAL eres de Peyarace saan ‘hg eet Fore Tne ea a ee rides BA lever ear aon faowsecen MUTA asesasnet am rte Nadn FReEOORcR cemzum hehe ences. oa an Semmes OLE lsoure ‘Pa a 2 as saan runsoe 28 eta mteen, ome even hte Fe acorn lace ee fer en wt MARIOS fod eg Ce TO Jean Scene Netra foresee ‘Sweat ve saa Sank smmgte Cope! Uso (15 raves tat ate 000 ABBE eso nets tara ‘een 31 -arig Sint tae [chad Ope pte sexe Saaaacae Bt xara FP? naar apie 4S PEM Pe euse 11H EAPO AT Gea de Propet soa ropareacts £08 BalBemsttes 0030 AE NETO Haare Taantrcs man acRD 50 ae oe Rg ape sce mae CLE RETIRAADALL pl -©- Semen (DoE A Camas rere Wed merce vo oe Mnccrpacen ue rn ert WATE 4 ‘8 Moe «Scag tt scwOrNER Caran Ene a Corea AL ewe net 40 ‘setce Preven Barbus ‘sonar ad ya Bg aCe femus Tee ReaD 2 ap aren tn Mace ‘sonore sigh Orla rey ane Prac. ad Leet seg 2aaninee ie SETE Fd Con ng Jerwermesaee —gramsatt a se samme ra TotaL, (noe, AA ating Jevouecicsrsars fuoetnos ecsns toon tenets 9 Pare cena cor WAS: Jouwaclesinaes wera cusca cn corpo Eettsa ie uae Wontar Jnmeccovi Nara agen be Rison rected amg o8 aso Pempons a0 Jrerer Popes isan rt JpesivensnLia Wnt Yi «Watrecse inset Sena ao PE one Pp Win en Jeu Wisdom stop Ceean rminkoge —— comarmncaracn Wd teers fe at Jreao fens Si bem Curae Mo igen Se WORDSTAR eS Jrraianisawe Fens eacomoensae ates lasso pt Emre eS 2 (inate 20 Joncas ato de Prepaniite ISC patermarton on Hee Lois HOLTZ nie oe 29 Jrcconceios comme sienna Feces OeePita og asian pees (meena ing Poteet foesa Tsar SURBO DAS se cn amet owaner Pigs cereal oe . Jeon. Curran Seer oh ey een paca, (QUPPER Basar watz et Neroa Petes 38 0) rans ane faos UPPER Vat | om oases et, serene Caren vse 2 teen WES 4 aca dns 1 Dat CuPFER Viste § a szav29 ve2 awe sues tesco cuppee Vins Horie races jane ‘vensePateons #20 agian tapers ‘ane sect Aint aseRiacoae PE aro cantare ‘ak abs ornate emgage peorseentaty tect ‘Seneca Corgtasen! ‘SaiaPreerahe 52 OWS Gis Wf Sak Ecos ‘coorna tenngan Eomenngger ces re io On ng Jets onan tang ‘Sree: Tt Bias ssa edt Pat Ate Ee [ecemen ‘af as eeprom Prone Pyrite MRE ‘Gompestie Jemearcuers — mroactows ie esas Lek 128 bento. 8 eee acs Lunsrone Gon ss etree Je Pate ae escorectrtrentonin oF Jusciacamun —etaaveds xt Cpeeeran lawn Sorina doi Lig Aeon fanca seeps erectnen 44 JarcaivcreRnr, rear tose mera aTarea temo perce Fides oct Hemant CARTOES DE REFERENCIA HARYARD ORMPHICS FOR Wn ane wance - a2 weoce 92 soos ¥ 401 NORTOM UTUTICS Wass reanse -sOBAK "WORD..00M. EM BORTUGUES ‘yong rea WANEONE esos sa svenons 38 rumboe v1 DAMAPLEX 28 Pacers, 40 cise 28 auarae orm Acess ESTRUTURAS DE DADOS E SEUS ALGORITMOS Jayme Luiz Szwarcfiter Professer Titular da Institute de Matemitica Pesquisader do Nuicleo de Computacao Eletrénica Universidade Federal da Rio de Janeiro Lilian Markenzon Professor Adjunto do Instituto de Matemndtica Universidade Federal do Rio de Janeiro Oc corres syria 21d by Sayre Lak Saworehitar @ jon on seta casorvadid. Prafoida # reproduce. meamo parcial war gualaues process ietnice,miawunieco, empeogealice 8, 8am aulNi2aGHD, por wsctito. don auteraa ¢ dn aatern visi de ofpnals:Frechich Qussay Sehmie aun xin prow Wen erie ooramagde inv Paute Ansa ich pl en/FoInN¢: Glee Gomes cow Santa Amour Arn ‘apa Zoumprese sea. crntral MAMEDE oo pe 040 Wi Biasit Catolonasd oe tanta, iiiento Mapiona! Hea Eaitores de Livros RE Sewarelia, Jayme Lule [Envuturas ce dadad & 4aus sigatiimes Fayre ir Sar lo du dansirs LTC-Livae Técaicon « Curdiions Ed, 1994, ‘s06p, % fer. ian Markenenn BbFopiata aul aeerieion iio) Pigonteaas. 1 Mareanzen, Lil. MTiule epg — gorse inca cou aa 1, Eetrulures de gacom¢Gompun DN an2¥e. 101 ax yon) sn0-a1N7F LICE AU Tole 1424) SOD. HOHE y 980.914 f 480-7147 [Meonlas Fa ‘Num Eueiitan de Anirada 1 CEP 08090 020 ~ Somor ak (081) aaa tana LTO Be ——— ‘A Terael, meu pai ALS. Ao Newton eM. Prefacio Este 6 um livro de estruturas de dados, com énfase em seus algoritmos, ‘Tanto estruturas de dados como algoritmos sto temas fundamentals, tendo com vista que praticamente todas as demals dreas da computagéo os wtlizam, As estruturas de dados que campéem este texto foram escolhidas dentro ns mais empregadas atualmente, No deseavolvimento dos algoritmos, 0 aspecto de eficiéncia ¢ ressaltad, Destina-se este livre basicamente a cursos de graduagia, podendo alguns tépiees ou capftulos ser utilizades em nivel de pés-graduagao. Nesse sentido, parte de seus manuscritos j4 foi utilizads nas disciplinas Estratucas de Dades, do Departamento de Computagio do Institute de Matemética. da Universidade Federal do Rio de Janeiro, « Algoritinas « Estruturas de Dados, do Programa de Engenharia de Sistemas e Computagie, da COPPE/UFRJ. Eate texto pode também ser utilizado por profisaionals da drea de desen- volvimento de software, para os quais é de grande importincia 0 dominio de esteuturas de dados. Este trabalho 4 resultado de mals de vinte anos de experiéncia dos autores am ensing de computagio. B aevolugdo de notas de aula e do material apre- de Otimizagio, reallzada na UFRJ om Jancito de 1989. Expressanios os nostos agradecluientos a Paulo Roberto de Oliveira, coordenador do evento, que sugeriu o trabalho, Em novombro de 1989, a. versio iniclal fol publicada também pels Universidade Federal de Minas Gerais, para a Escola de Algoritmos ¢ Otimiaagio, organizada pelo Depar- tamento de Ciénciada Computagio, Entretanto, ao longo desses cinco anos, foi consideravelmenta modificada ¢ ampliada, Xj Estruturas de Dadae ¢ Seve Algeritmes © texto encontrarse organizado da seguinta forma, O capitule 1 apresenta 1s conceltas bésicos necesséries, O capitulo 2 descreve a estrutura de da- des mais simples, ¢ talvez a mais importante sob o aspecto de aplieucio: as listas, Um estudo inicial geral de drvores 6 realizado no capitula 3. O capitulo 4 particularize esta estratura para. sou emprego eficiente em com- putagdo, apresentando as drvares bindrias de busca, AAs drvores balanceadas, ‘uma forma mais slaborada da atruturas de dador, constituam © objeto do capftulo 5. © capftulo 6 estuda as listas de prlaridades, uma estewtura com aplicagées, por exemplo, em problemas deotimizagio. O capitulo 7 descreve algumas estruturas auto-ajustdvels, Isto £, euja forme se modifies dinatnica- mente, visando tornar mais eficiente a sua manipulagda, O capitulo 8 estuda as tabelas de disperséo, um método eficiente para zesclver 0 problema de busea. O capftulo 8 descreve as Grvores digitais, esteuturas empregadas no provessamento de textos. Finalmente, o capituls 10 ¢ dedieada a problemas envolvendo cadeias, caso et, que oF dados so disportos oem qualquer tipo de estrutura. ‘Todos os capitulos contém exercicios ¢ notas bibliogrdficas. Os exerefelos se encontram em ordem de apresentacée da material. Os simbalos * ¢ *, ao lade dos exerefcios, Indicam difieuldade média ¢ malor, respectivamente. “Aljons dos exercicios marcades com * sio problemas de pesquisa. Para a realizagio deste trabalho, agradecemos 0 suporie reeebide da Univer- sidade Federal do Rio de Janeiro, nossa instituigio de origem, bem como do Laboratoire de Recherche en Informatique, Université Paris-Sud, Or say, Franga, e do Cemire de Recherche sur les Transports, Université de ‘Montréal, Montreal, Canad, onde, respectivamente, permanecemes como pesquisadores visitantes, durante parte do tempo em que este livro foi ex srite. ’ Na fase em que foi utilieade come texto nas disciplines da UFRJ, diversoa alunos contribuiram com sugesties e se dedicaram ao trabalho de busea e corregao de errs. Somos gratos acs alunos por esta contribuigdo. Manifes- ramos of neasos agradecimentes a José Fabio Marinka de Araijo e Yemar Vianna ¢ Silva Filho, pelo apoto zecebido, Finalmente, & LTC - Livros ‘Técnicos @ Cientificos Editors, pela qualidade de seu trabalho. Jayme Luis Szwarefiter Lilian Marken: Fovereiro 1904 Sumario % Capitulo 1 - Introduc3o, 1 Ll = Introdugio, 1 1.2- Apresentagio dos Algoritmos, 2 13 - Recursividade, 4 14~ Complexidade de Algoritmos, T 15- A Notacio 0, 10 16- Algoritmos Gtimos, 13 LT Exerefelos, 15 Notas bibliogréfices, 17 Capitulo 2 - Listas Lineares, 19 2.1 ~Introdugio, 19 2.2 ~ Alocacao Seqilencial, 2 2.3 - Listas Lineares em Alocagio Seqiiencial, 22 24— Pilhas e Files, 23 2.5 ~ Aplicagéo: Notagéo Polonesa , 32 2.6 - Alocacéo Encadeada, 34 2.7 — Livton Linoaree om Alocagie Encademda, 37 ‘27.1 = Listas simplestnente encateadas, 37 2.7.2— Pilhas e filas, 40 207.4 ~ Listas elreulases, 43 7-4 ~ Listas duplamente encadeadas, 45 2.1.8 — Aplicagiio: ordenacdo topolégica, 47 2.4 ~ Alocagdo de ago de Tamanhe Varidvel, 52 2.9 ~ Exerciclos, 55 Notas bibliogréficas, 50 il /- Estuturas de Dados « Seus Algocitmos & Capitulo 3- Arvores, 61 3.1 = Intradugiio, 61 3.2 Definiptes © Representagdes Basicas, 62 3.3 — Arvores Bindrias, 67 3.4 — Percurso em Arvores Bindvias, 74 3.5 — Conversiio de uma Floresta, 79 3.6 - Arvores com Costura, 83 3.7 ~ Exerciclos, 83 Notas bibliogréfieas, 90 « Capftulo 4 -Arvores Bindrias de Busca, 91 4.1 ~ Intradugio, 91 4.2 - Arvore Bindria de Busca, 92 4.2.1 - Conceites bisicos, busca ¢ insergée, 92 4.2.2 Busca com freqiiéncias de acesse diferenciadas, 99 43 - Arvore de Partitha, 107 4.3.1 - Conceitos bésicos, 107 4.3.2—A busea em drvores bindrivs de puriilia, 107 4.8.9 - Arvore bindsla de partilha étima, 109 4.4 —Exerciciog, 119 Notas bibliogréficas, 125 Capitulo 5 - Arvores Balanceadas, 127 5.1 - Introducio, 127 52-0 Conceito de Balanceamento, 128 5.3 - Arvores AVL, 130 5.4.1 — Balanceamento de drvores AVL, 130 5.9.2 = Iuclusiiy wm drvures AVL, 1d4 5.4.3 —Implementagho da incluso, 139 54 — Arvores Graduades ¢ Rubro-negras, M4 54.1 - Deserigiin, 144 5.4.2-Balanceamento, 180 5.4.3 - Inchusio, 158 54.4 Implementagio, 156 55 - Arvores B, 160 Coneites bisicas, 160 ogo, 163 Dusen, inseresic Sumirio f xt 5.5.3 - Custos de busca, insergo e remogio, 169 5.6 - Exercicios, 171 Notas bibliogréficas, 174 Capitulo 6 - Listas de Prioridades, 175 6.1 ~ Introdugio, 175 6.2 — Implementagio de Listas de Priovidades, 176 A.A — Alteragan de Prinsidadas, 179 6-4 ~ Inserggo e Remogéo em Listas de Prioridades, 182 6.5 ~ Construgéo de uma Lista de Prioridades, 184 6.5 — Aplicagdo: Ordenagio, 185 6.7 ~ Maximos e Minimos, 186 6.8 -Enercicios, 192 Notas bibliogréficas, 194 Capitulo 7 - Estruturas Auto-ajustaveis, 195. Tl = Intredugio, 195 72- Comploxidada Amortizada, 196 7a Listas, 199 7.9.1 ~ Métodos de anto-ajuste para listas, 200 7.3.2 Andlise de métode mover paca a frente, 202 74 = Conjantos, 205 7.4 - Fusia por tamanko, 207 74.2 Compactagéo de caminhos, 210 74.3 ~A complexidade das operacies, 213 7.5 — Arvores de Difusio, 214 75.1 - Operagdes de difusio, 215 7.5.2 Complexidade des operagdes de difuato, 219 76 - Exereicios, 228 Notas bibliogréficas, 226 Capitulo 8 - Tabelas de Dispersiio, 227 8.1 - Introdugdo, 227 4.2 ~ Principio de Funcionamento, 228 4.3 ~ Fungdes de Dispersio, 230 1 = Método da di 4.3.2 = Método da dobra, XIV f° Estruturas de Dudes © Seus Algeritmes 8.3.4 - Método da multiplicagio, 24 8.3.4 - Método da anilise dos digitos, 235 3. ~ ‘Tratamento de Colisées por Encadeamento, 285 8.4.1 = Encadeamento exterior, 235 8.4.2 ~ Encadeamento interior, 239 8,5 ~ Tratamente de Colisies por Enderegamento Aberto, 243 8.5.1 ~ Tentativa linear, 245 8.5.2 - Tentativa quadcética, 247 8.5.9 Dispersio dupla, 248 8.6 ~ Tabela de Dimensio Dindmica, 250 8.7 ~ Exercfeios, 285 Notas bibliogréficas, 258 Capitulo 9- Busca Digital, 259 S41 —Intradugiio, 259 9.2~A Arvore Digital, 260 9.3 ~ Arvore Digital Bindria, 285 0.4 — Arvore Patrfcia, 268 8.5 ~ Exercicios, 274 Notas bibliogrdfices, 275 Capitulo 10 - Processamento de Cadeias, 277 10.1 = Introdugéo, 277 10.2 - O Problema do Casamenta de Cadeias, 278 10.3 ~ Q Algoritmo da Forga Bruta, 279 10.4 — O Algoritmo de Knoth, Morris e Pratt, 281 0.5 ~ Compactagie de Dados, 292 U6 ~ O Algoritino de Freqjiéneia de Caracteres, 2 W.7 = O Algoritmo de Huffman, 294 0.8 Exercicios, 301 Notas bibliogrdficas, 305 Referéncias Bibliogrdficas, 307 Indice Analitica, 315 Preliminares 1,.1-Introdugdo Um algoritma ¢ nm proceaso sistemdticn para a resolueSa de um problems 0 desenmivimenta de algeritmns # partienlarmente importante para peo. Dlemas a seremn solucionados em um computador, pela prdpria natureza do instrumento utilizado. Neste livro sio abordados apenas esses problemas. Exister dois aspectes bsieas no estuda de algoritmos: agorrecdo-ea andlise. 0 primeiro consiste em verificar a exatidio da métado empregada, o que é realizado através de uma prova matemdtica, A andlise visa & obtengio de pardmetzos que possam avaliar a eficiéncia do algoritmoa em termosde tempo de execugio e meméria ocupada, A anilise é realized através de um estudo do comportamente do algoritine. Amibos os aspectos serdo considerados neste livro. ‘Um algoritme computa uma sa(da, o rcoultndo do problema, o partir de uine entrada, as infocmagées inicialmente conhecidas e que permitem encontrar a salugéo do problema. Durante o procesto de computagio, © algoritnie manipula dados, gerados a partir de sua entrada. Quando os dados so dispostes e manipulades de uma forma homoginea, constituem wen tipo abs trate de dados. Este 4 compaste par um modelo matematico acompanhado por um conjunto de operagies definide sobre esse anodelo, Um algoritmo 4 projetado em termos de tipos abwiratos de dados, Para implementé-tos numa linguagem do programagio, é necessério encontrar uma forma do re: presenti-los neséa linguagent, utilizanda tipos 6 operagdes suportadas polo 2 J Estruturas de Dades ¢ Seus Algaritrmes computador. Na representagdo do modelo matemdtico emprega-se wie ¢5 (rufura de dados, o aszunto deste livro As estruturas diferem emas das outzas pela disposigie ou manipulagdo de seus dados. A disposigio des dados em uma estrutura abedece a condigGes proostabelecidas e earacteriza a estrutura, ‘O extudo de estruturas de dades no pode ser desvinculado de seus aspactos alyoritmicos, A escolha correta da estrutura adequada a cada caso depende diretamente do comheciments de algoritmos para manipular a estrusura de maneita eficiente. Q conhecimento de principios de complexidade computa- ional é, portant, zequisite bésieo para se avallar corretamente a adequagio ide urna estrutura de dados, Essa preseupagéo algoritmica constitui fator dominante na eseolha da forma de apresentagio des estruturas descritas te texto. ste capitulo coniém, principalmente, a notagio e os conceitos bisicos uli- saulos a0 longo do texto, A segdo 12 descreve a lingwagem em que or al- oritmos serdo apresentados. Alguns desses algoritinos sio recursivos. Uma nociio geral de recursividade é, entdo, apresentada na sega 1.3. A sega oguinte, 14, introdue o conceito de eomplexidade, utilizado para. avaliar a oficiducia de algoritmos, As complexidades sio cbtidas, geralmente, através de uma notagie matemética especial, denominada notagio Q, Este é o ob- jeto da sego 1.5. Finalmente, o conceito de algaritmo étimo é descrito na secio 1.6 1,2- Apresentagdo dos Algoritmos Ao longo deste texto, os algoritmos seriin descritos através de uma linguagem jura simples, Ela possui estrutura semelhante ao Pascal, por exemplo. Contudo, para facilitar a sua interpretagio, seri adotado 0 estilo do livre formato, quando conveniente ‘As convengées seguintes serio utilizadas com respeito & linguagem. AA linguagerk possul uma estrutura de blncos sermelhante ao Pascal. © inicio © 0 final de cada bloco sa determinados por endentacio, isto 4, pola posigéo da margem esquerda, Se uma certa linha do algoritmo at6 a dltima linha soguinte, ewja margem csquerda se localiza mais & direlta do que a primeira do bloco, Por Inicia um blaco, ele se estend Praiminaree J 3 exemplo, o bloce iniciado por pare no algoritmo 1.1 inclai as trés linhas seguintes, = A declaracao de atribuigio é indieada pelo aimbato := ~ As declaragées seguintes so empregadas, com significado semelhante ao usual, ee... antic ee... antic... senko anquante .., faga para... tage pare — Varidvels simples, vetores, matrizes e registros sin considerados camo tradicionalmente em linguagens de programagio. Qs elementos de ve- tores e matrizes so identificadas por indices entre calchetes. Por exe plo, A[5]e Bf, 3] indicam, respectivamente, o quintoalemente do vetor Av ushumuly ideatificade pelos fadices (i,8) da mattis B. No caso de regstros, a notagio T. chate indica o campo chave do registro T. — A referéncia a registros pode ser também realizadla por mele de pon- teizos, que armazenam enderogor, com uso da simbolo }. Cada pon- teizo é associadn a um inlco tipo de registro. Por essa razio, o nome do registro pode ser omitido, Por exemple, pt T .info representa 0 campo info de um registro alucado no enderese cantida em pt, ~ Sao usados pracedimentos e fungSes. A passagem de parimetros & feita por referénela, isto é, a enderego do parametzo é transmitide para a votina. Essa forma de transmissin possibiita a alteragio do comteido da varidvel utilizada, ~ A sontenca imediatamente posterior ao sfinbolo % deve ser interpretada come comentitio. Como exemplo, seja uma seqiéneia de clementos armazenada no vetor S|), 1 O.,Um algoritmo recursivo para efetuar esse cdlculo encontra- descrito-em seguida, A idéia do algoritmo & multo simples, Basta observar que 6 fatorial de n é vexes 6 fatorial den — 1, para n > 0. Por convengio, or 1. No algoritmo a seguir, repromentadas pola fungio fat. A ch ad fatty) Pralnnares. J 5 algoritmo 1.2: fatorial (gecuzsivo) fanga faterial{i) fat(i) = 405 <1 ontéa | sengoé x fat{i- 1) Para cfcito de comparagio, o algoritmo 1.8 descreve o edlculo do fatarial de de forma. néio recursiva, A vasifvel fat representa, agora, um vetor e nao mais uma fangéo. O elemento fatln| eamtém, no final, a vilor do fatorial desejado, algoritmo 1.3: fatorial (gle.recursivo} Fat{o) = 1 para j= 1, fatty] yn aga, 4x fatlj=1) Um exemplo conhecido, onde a solugorecursiva é natural e intuitiva, é odo Problema da Tarve de Handi. Este coneiste em trés pines, A, B eC, dono- minadoe origer, destino e trubsiha, respectivamente, en discos de diametros diferentes. Tnicialmente, tades as discos se encontram empitkedos no pino- ‘erigom, em ordem decroscente de tamanho, de baixo para cima, 0 objetivo empilhar todos os discot no pino-desting, atendendo 4s seguintes restrigoes: (i) apenas um dizea pode ser movide de cada ves, ¢ (ii) qualquer disco nila pode ser jamais colacade sobre outro de tamanbo menor. A solugio do problema dé descrita aseguir, Naturalmente, para n> 1, pino- trabalho deverd ser utilizado como drea de armazenamenta temporirio. O- raciocinio utilizado para resolver o problema é semelhante ao do uma prova matemética por indugie, Suponha que se saiba como resolver 0 problema. aid m—1 discos, n > 1, de forma recursiva, A extensio para a discos pode ls pela reslizag#o des seguintes passos. serel Resolver o problema da Torre de Handi para os n — 1 discos do topo do pino-origem A, supondo que o pino-destino seja Ce 0 trabalho aja B. ~ Mover o n-ésimo pino (maior de todos) de A para B. Resolver o problema da Torre de Handi para o# n—1 discos Jocalizadoa no pino €, supasto origem, considerando.oa pinos Ae J? como trabalho ¢ destino, respectivamente, 6 / Estruturas de Dados © Seus Algoritmo 8 G @) A 8 e (e) A a ¢ te A (@) Pigura 1.1: Problema da Torre de Handi ‘Ao final desses passos, todos os discas se encontram empithasos no pino # ¢ fan duas restrigGes (i) e (ii) foram aatisfeitas, © algoritmo 1.4 implementa o procenso, © procedimento recursive Aanoi é utilizado-com quatro parimetros represaatando, rospectivamente, o nimero de discos, © pino- Prajiinares {7 algoritme 1.4: Torre de Handi procadimente Aanoi(n, A,B,C) sen > (lent&o Aanoi{n ~ 1, A,C, BY mover o disco do topo de A para B hanoi(n — 2,C,H,A) A figura 1.1 ilustra os passos efetuados pelo algoritmo. A chamada externa € hanoi(n, A,B,C). 1.4-Complexidade de Algoritmos Conforme j4 mencionada, uma earacteristica muite importante de qualquer algoritmo 6 o seu tempo de execucdo. Naturalmente, é possivel determind- lo atrarés de métadas empicicos, isto é, obter © tempo de execuggo através daexeencée propriamente dita do algoritmo, consideranda-se entradas diver sas. Em contrapartida, é poss(vel obter-uma erdem de grandeza de tempo de execucdo através de métedos analiticos, 0 objetive desses métodos 6 deter- minar ima expresedo matemética que traduza o comportamento de tempo de um algocitmo, Ao contréria do método empfrico, o analitico visa aferir 0 tempo de execugéo de forma independante do computador utillzado, da lin- gusgem # compiladores empregados o das condigies locais de processamento. A tarefa de obter uma expresso matemdtica pure avaliar o tempo de um algoritme em geral no ¢ simples, mesmo considerando-se uma expresso aproximada. As seguintes simplificagées serio introduzidas para o modelo proposta, — Suponha que a quantidade de dados a sarem maniptladas pele algo- ritmo seja suficientemente grande. Isto é, algoritmos eujas entradas consistam em uma quantidade redutida de dados no serio considera dos. Somenteo_comportamento assintético soré avalinda, ou seja, a expres matemdtica fornocerd valores de tempo que serio vélidios naicamente quando a quantidade de dados correspondente creseer 0 sullesente. Nie serio. consideradas constantes aditivas.ou_multiplicativas na ex pressio matemdticn obtida, Ista 6, a expressiio matemdticn obtida sord. valida, a monoe de tale constants, Bf Estruturas de Dados « Seus Algeritemas fi necesndtio, ainda, dafinir a varidvel em relagio & qual a expressio mate- indties avaliars o terape de execugso. 0 prdprio eanceita de algoritmo ofe- roce & sugestio, Tm algoriime opera a partir de uma entrada para produsir uma saida, dentro de um tempo que se deseja avaliar. A iddia 6 exprimir @ iompo de execugdo en fungéo da entrada, © proceso de execugio dé sim algaritran pade ser dividide em etapas ele- memtares, denominadas pessos. | Cada passo coniiste na execuggo de um iimero fixo de operagdes bésicas eujos tempos de execuge slo considerados constantes, A operagaa bésica de malor freqiiéncia de execugso no algeritmo édenominada operagiia dominarite, Come a expressio do tempo de execugéo do algoritmo seré obtida a menes de constantes aditivas e multiplicativas, o mimero de passas de um algoritma pode ser interpretado como senda 0 niimero de execugdes da operagio dominante, Por exemplo, em diversas alyoritmas para ordenar of elementos de uma seqiéncia dada, cada passo coresponde a uma comparagée entre dois elementes da seqiiéacia, Na reali- dade, o nimera de passos de um algoritmo constitui a informario de que se nocesslia para avaliar v avu comportamenta de tempo. Audim, um algoritme deum tnieo passo possui tempo de execugao constante, Polo expasto, é natural definir a expresso matemiitica de avaliagén do tempo de exocugie de um algoritmo como sendo uma fungéo que fornece o miimera do pastos efetuados pelo algoritmo a partir da uma eerta entrada. Come exemplo, 0 algoritmo Li de inverstio de segiincias, cada entrada uma sagiéneia que se deseja inverter. 0 algositmo efetua, exatemente, fs mesmas operagées para seqiéncias de mesmo tamanho m. Cada paseo corresponde a troca dé posigo entre dois elementos da seqiéacia, Qn seje, & exocigéa das trés instrugies de atcibuigio dentro do bloco para do algoritnio. © niimero de passos é, pois, igual an nimesa de execugtas do bloce pare. Isto 6, igual a [n/2), n> 1. Como exemplos adicionals, consideraos problemas de determinay a4 matrizes soma Ce produto D de duas matrizes dadas, A= (a;;) © B= (bys), ambas nxn. Nesso caso, C&D também passuem dimensio nx n ¢ seus elementos 64 © diy podem sér ealculados, respectivamente, por eis may Bey a wT ah igesa Pretinsinares: J 9 0 algoritmo 1.5 descreve a computagio da matriz soma de duas matr ‘enquanta 0 algoritmo 1.6 fomece o produto. Algoritmo 1.8: Soma de matrizes para dis 1,...)n faga para j Como no caso do slgoritme 1.1, ambos os algoritmes de soma ¢ produto efetuam as mesmas opecacdes, respectivamente, sempre que A, B [orem matrizor de mesma dimenshn n ¥ nm. A varidvel independente é0 parametro. 1s. Cada passe de algoritmo 1.5 coresponde & exeeugo de-umasoma ay;-+b;), ‘enquanto, 20 algoritmo 1.6, coresponde ao produto aj4.b4j. © nilinero total de passos 6, pols, igual ao niimero total de somas ajj-+5,5 © produtos aves biys respectivamente, para cuda caso, Ou seja, o algoritmo 1.5 ofeiua n? passon, cenguanto © algoritme 1.6 efetua a A nocéo de complexidade de tempo é descrite a seguir. Seja A umalgocitmo, (By,.--, ig} © conjanto de todas as entradas passives de A. Denote por t, o nimera de passos ofetuades por A, quando’ entrada for By. Definem-se compiczidede do pier caso = maxz,ce {ti}. complezidade do melhor caso = minsyere {ti}, complezidade do caso méidio = T,ccem Pitt onde p; é2 probabilidade de ocorréncia da entrada Bi. De forma andloga, podem ser definidas compleridades de espoga de um al: goritme, ‘Accomplexidades tim por objetivo avaliar a eficiincia de tonpo.0u.espage ‘A complexidade de tempo de plor case corresponde ae nimero de pasi 10) Estraturas de Dados @ Seus Algoritmos que o algoritmo efetaa no sou plor caso de axecugd, isto 6, para a entrada, mais desfaverdvel. De certa forma, a complexidade de pior caso é @ mals importante das toés mencionadas. Ela fornece um limite superior para o niimero de paseos que o algoritmo pode efetuar, em qualquer case, Por isso mesmo ¢ a mais wtilizada, Q termo complezidode seri, entho, expregado ‘com o significade de complexidade de-nin-rasn. A complexidade de melhor caso é de-uso bem menos freqitente. E empregada, vem situagées eepecfficas. A complexidade de caso médio, apesar de impor- tante, é menos ntilizada do quea de pior caso, por deis motives. Eta primeizo lugar, ela exige o prévie conkecimento da distribuigio ée prebabilidades das diferentes entradas do algeritmo. Em diversas easos, essa distribuiglo € ds conbeckda. Além disso, 0 cdleale de seu valor Dpjé; freqiientementé & de tratamento matematico complexo. 4 1.5-A Notacae O Observe que as definigdes de complexidade da seyéo anterior implicam o atencimento daz duas simplificagées mencionadas no infclo do parégrafo. Em conseqiéneia, quando se considera o nimeco de passos efetuados poz uum algoritmo, pedem-se desprezar constantes aditivas on mnultiplicativas Por exemplo, um valor de miimero de passos igual = 3n seré. aproximada para me. Além disso, como o interesse é reatrito a valores assintéticos, termas de menor gran também podem ser desprezades. Assim, um valor de nimere de passos igual a n® +n serd aproximado para n’. O valor 6n?-+ én = 9 serd transformado em x3. ‘Tormuwe dul, purlanil, deacsever operadores mateméticos que sejam eupases de representar sitnagdes como essas, As notagies O, fte © serio utilizadas com essa finalidade, Sejam f, & fungées reais positivas de varidvel inteira n. Diz-se que f 4 O(h), eserevendo-se { = O{ft), quande oxistir uma constante ¢ > 0 ¢ wm valor Inteiro mp, tal que n> no = fin) SeAtn} ‘Ou seja, a fungio atua como um Limite superior para valores assintsticos da sith Ml pedicel tlhe ste endiaierten din aa Relates teesienielictnisiin ‘xi pehenialles £3: Prefininanes 11 fent=Le f= O(n’), fend-1 f= O(n?) f ada = f= O(1). (J =5+ Plogn + Slog! n > f = Oflog’ n). FSS Blognt slog as f= O(n) © fad + Slogn+2— f= Ofn}. F529 45m! s f= O[2"). ‘As sequintes propriedades so titeis para manipuler expresses em notaciio O. Eles decorrem diretamente da definigin, Sejam g, h fungdes reais positivas e k uma comstante, Entko a Oly +h) = Of) +O(h), 6 Ofk. g} = &. O(4) = O14). Essas dues propriedades foram empregadas, loaplicitamente, xbs exemplos anteriores. (A notagdo O sera utilizada, a0 longo deste texto, para exprimir comple xidades, Por exemplo, saja determinar as complexidades de pior, melhor 0 ago médio des algoritmes 1.1 2 1,6. Todos eles apresentam a propriedade de a niimero de passos manter-se o mesmo quando aplicados a entradas diferentes dé mestho tamanho. Ou seja, para um mesmo valor den, o ndimero de pasos mantém-xe canstante. Como a varidvel indepondente 0 valor i, conelui-se que as complexidades de pior, melhor caso médio slo todas iguais entre si para cada algoritiae, © algeritme 1.1 efstun eempre |» /2] pascos. Logo, a sua complexidade 4 O(n). No algoritmo 1.4, 0 niimero ‘de passcs 6 igual ao nimero de produtos J. fat{j — 1), isto 6, m. Sua complexidade, portanto, é O(n). Da mesma forma, verifica-se de imediato que as complexidades dos algoritmos 1.5 & 1.6 so iguais a O(n?) e O(n), reapectivamente, Para encontrar a complexidade de procedimentos recursivos, pode-se aplicar a soguinte técnica, Detormina-se a niimero total de chamacdas ao procedi- mente recursive, Em sagubda, caleula-ve a complexidade da execugdn cor reapondente a uma unica chamada, sem que se considerem ax chamadas serie encontradas, A con 12 f Estruturas de Dados © Seus Algoritmos 1a complexidade da computagéo de uma chamada faolada, Por pra caleular o fatorial de n > 9, de forma recursiva, 0 algoritmo ia total de m chamadas ao procedimento fat. A compleridade jasio correspondente @ uma chamada & eonstante, isto &, O(1). De fato, para n> 1, apenas um produto ¢ efetuado e, quando 2 <1, ape- has uma atribuigée é exeeutada, Logo, a complexidade final do algoritmo é O(a), A complexidade do algoritmo recursive 1.4, para resolver o problema dda Torre de Handi, 6 O(2"), segundo a exercieio 1 Conforme mencionado, es algeritmos até agora examinados efetuam exata- mente os mesmos pasos para entradas diferentes de mesmo tamanko, Sem diivida, este nfo 4 0 caso geral. Como exemplo, suponha um problema cuja entrada consista em duas matrizes Ae B, de dimensbes nxn, ¢ um patdineteo bindrio 2, com valores passivels Oe 1. Dependendo de valor de z, deve-se ealeular a soma on o produto das matrizes. Isto é, se 2 = 0, caleulaz a matrle A+B, ou, se 9 = 1, calcular A.B. Um algoritmo para efetuar implar. Sua entrada consiste em 22 +1 informagdes, isto 4, possul tamanko O(n), Em soguida, verificarse a valur x obtide da entrada. = 0, entdo executa-se o algoritamo 1.5 da soma de matrizes. Se 2 = 1, o algoritmo 1.6 de produto de matrizes. Nesse essa, para cada valor de n, oalgoritmo é sensivel a duas entradas distintas, corsespondendo aos valores (e 1 de a, respectivamente. A complexidade de melhor caso corresponde a + = 0 0 ¢ dada pola comploxidade do slgoritmo 1.5, ou saja, O(n). O pior caso ocorre quando z = 1. Sua complexidade & obtida do algaritmo 1.6, isto 6, O(n), Para determinar a complexidade de easo médio, seja ga proba. bilidade de que o valor de 3, da entrada, seja igual a 0. Extdo a expressio da complexidade do caso médio é qn? + (1 — q)n*. Um outro exemplo de complenidads de case médte cord desenite na padaime capitelo, oxna tavefa A notagan ©, descrita a seguir, é-til para exprimir limites superiores justos. Sejam f, g fungdés reais positivas da varidvel intelra nw. Diz-se que f 6 @(g), ascrevendo-we f = O(9), quando ambas as condigées f = O(g) © 9 = 0(f) forem verificadas. A notacio @ exprime o fato de que duas fungies posiuem a mesma ordem de grandeza assintétiea. Porexemplo, se f = 7-1, gentoh=n°,entéo {6 Ol), f 6 O(h), g 6 OCF), mas h nio € OCF). Consoqitentemente, f 4 @(g), mas f nso 6 O(h). Da mesma forma, se f= B+ Zlogn + lon eg =n, entho f é O(g), porém f nfo & O(g). No caso, f 6 O(log? n). Assim como notagio Q 4 étil para descrever limites superiores assintéticas, a notagie 1, definida a seguir, é empregada para limites inferiores as tdticos. Sojam J, h fangies reals pesitivas da varidvel inteira m. Diz-se que f 6h), ‘eaerevendo-se f = O(h) quando existir uma constante ¢ > 0 ¢ um valor Intefre na, tal que n> = fin) > cfm). Por exemplo, se f = a? — 1, ent8o sia vélidas as igualdades f = O(n*), {= A(n)o f= (1), mas ndo vale f = Ai(n*). 1.6 - Algoritmos Otimos A nogis de comploxidade esti relacionada a um dado algoritmo. Ela doterminar 9 niimero de pastos efetuades por um algoritmo especifice, sem Jovar om consideragin a possivel existéncia de outros algoritmos para o mesmo problema. Essa questio mais abrangente serd ne eer segio. Soja P um problema. Um lite dnferior pana P & uma fungio ¢, tal que a ‘complexidade de pior easo de qualquer algoritme que resolva P¢0(2). Istod, todo slgoritme que resolve P efetua, pelo menos, (8) passos, Se existir um algoritmo A, cuia complexidade seje O(E), entéo A é denominado algoritima timo para P. Nesse ease, 0 limite 91) & 0 melhor (maior) poss(vel. Intuitivamente, um algoritmo étimo 4 aquele que apresenta a menor com: plexidade dentre todos os possiveis aleoritmos existentes para resolver « mesmo problema, Assim como a notagéa O é conveniente para exprinir complexidades, a notagdo ft 6 utilizada para limitos inferiores. Existem limites inferiores naturais, como, por exemplo, o tamanho da en trada, Todo possivel algoritmo para o problema considerado deverd, ne- vessariamente, efetuar a leitura da entrada. Assim, por exemplo, a entrada do algoritmo 1.1, de inversdo de seqiéncias, consiste em uma seqiéncia de n clomentos. Qualquer possivel algoritmo paru inverter a saqiéncia doverd efetuar a sua leitura, Isto é, um mite inferior para o problema-de inversion de seqildncins 4 (nm), A complexidade do algoritmo 1.1 4. O{n). Conclub-ve entio que cle 6 unt algoritmo dtimo, Da mesma forma, qualquer algoritmo [4 /) Extiuras de Dados e Seus Algoritmos pore vomar duns matrizes wx m deveré, em primeire lugar, efetuar a sua lolinra, Isto & um limite Inferior para 0 problema de soma de matrizes & M2), A complexidade do algoritino 1.5, para somar as matrizes, é O(n"). Logo, ole é étima, Analogamente, um limite inferior para o problema do ilo de matrices € O(n?), A complexidade do algoritme 1.6, que cal- » produto de matzizes € O(n*), Em principio, nada poderia ser dito acerca desse algaritmo, quanta a recanbedé-lo come dtima on nga. Contudo, oto conhecides algoritmos que efetuam o produto de mattizes dentro de uma complexidacle inferior a O(n). Tssa significa que o algoritmo 1.6 nfo é étimo. De modo eral, o interesse # determinar a fungio que represents o maior ite inferior possivel pare ain problema, Analogamente, para um certo Algoritmo, 9 interease 6 encontrar a fungéo tepresentativa da menor comple xitlade de pior caso do algoritma. A determinagdo de complexidades justas 6 vealizada, sem dificuldades, para uma grande quantidade de algoritmes conhecides. © mesmo no se dé, contado, para os limites inferiores. Sem. chivida, a determinagiio de limites inferiores triviais, come os provenientes do tamanhe da entrada, pode ser de pauco interesse ee os valores obtides forem de grandezs sensivelmente foferior 3s complexidades dos algoritmos conhecides. © edlewlo de limites inferiores, de mode geral, nao é-um pro- bjema simples. Esse célculo se baseia no desenvolvimento de propriedades iatemsticas do problema, independentemente dos algoritmos empregados. Na realidade, cio relativamente poucos os preblemas para os quais existem limites inferiores nao triviais. conbecides, como, por exemple, o problema de ordenar oma aeqilénela de t elementos. O limite trivial, extraido da leitara, é Na). Contudo, hd uma preva matemdtica de que Qfnlogn) é um limite inferior. Por outro lado, existem algoriimes conhectdes de ardenagéo, cu- js complexidades si0 O(logn), Isso permite concluir que tais algeritmos sho dtimos © que o limite @(alogn) 6.0 melhor possivel. Para uma quanti- dnde immensa de problemas de interesse, a disténcia entre o melhor (maior) limite inferior conhecido eo algoritme de malhor (menor) complexidade & srande, Por exemplo, existem muites problemas cujo maior limite inferior conleeide & um polindémio na vazidvel representative do tamanho da entrada, ‘enquanto a menor complexidade de um algoriime conbecido ¢ exponencial usta varidvel. Em todes esses cates, permanece a divida quanto a se 6 possfvel provar um nove limite inferior mais alte au desenvelver um nave algoritmo de complexidade mais baixa ou am Prafiminares | 15 1,7 - Exercicios 11 Responder se é certo ow errada: Todo procedimenta recursive deve incarporar terminagées sem chama- dag recursivas, caso contrdria ole seria executado um mimere infinite de veaes. 1.2 Responder se ¢ certa ot erzada cada afirmativa ebaixor (i) 0 algeritmo 1.2, gue calcula fatorial de forma recursiva, requer apenas uma quaniidade constante de meméria, (i) 0 algeritmo 1.3, fatorial nfo recursivo, requer o armazenamiento do wetor fet, com x41 elementos 1.3. Desenvolver um algoritmo néo recursive para 9 céleulo do fatarial de inteiro n > 0, de tal forma que prescinda do armazenamenta de qual- quer vetor. 1.4 Mastrar que o algoritme 14, para o problema da Torre de H: requer exatamente 2" — 1 movimentes de disco para terminar. 15* Provar quo é minimo o mimaro de movimentes de discos yo problems da Torre de Handi, dado no exereitio anterior 1.6 Eserever uma prova de correc para o algoritmo 14, LT Reescrever o algoritmo 1.4, de forma que a recurslvidade pare no nivel correspondent a n = 1, endo an = 0, como ne algoritmo do texto. ‘Ha alguma vantagem em realizar essa modificagio? Qual? 18° Elaborar um algoritmo no recursive para o problema da Torre de Hanéi, 19 Considere a seguinte generalizagéo do problema da Torre de Handi, © problema, agora, consizte om m dircor da tamanhos distintos « qua tro pinos, respectivamente, o de origem, o de destino © dois pinos de trabalho. De resto, a problema ¢ como no caso de trés pinos. Isto 4, de inicio, of diseas se encontram todas no pino-origem, em ordem decrescente de tamanko, de baixe para cima, Q objetivo ¢ empilhar todos os discos no pino-desting, satisfazenda as cond) gies (i) ¢ (ii) do caso dos trés pinos, desesito na secio 1.3. Flaborar um algoritmo para resolver easa generalizagio, Determinar (0 mimero de movimentas «lo disco efetuados. na da ‘Tor Handi, of do disco vaja méaim 1.10* Elaborar um algoritme para resolver o pra movi ‘com:quatre nines, culo ndmers:¢ 16 / Estraturas de Dados » Seus Algeritmor 1.11" Flaborar um algoritmo para. resolver o problema da Torre de Hand! com m > # pings, isto é, em que m — 2 pinos so de trabalho. Deter- minar 0 némero de movimentos de disco efetuades. 112° Provar ou der contra-exemplo: ‘A solugio do problema da Torre de Handi é nica, Isto & 56 hé uma tintea seqiiéncia de movimentos de discos que conduz & solucio, a meaos de repeticées de movimentos. 1.13. Repetir o exerefeio 1.12 para o casa de quatro pinos, 1.14 Bsccover as seguintes fianeSes em notagio O: mint; on? +Qlogn; an"45.2%: (nap tat 902, 1.15. Responder se é certo ou ercada: Se f, g sio fungies tais que f = Og) eg =f), entio f = Og). 1.16 Responder se & certo aw errada: A definigo da notagée @, dadana segio 1.5, é equivalente & seguinte: sejam fh fungbes reals positivas da varidvel intelra n. Diz-se que J = @(h) quando existirem constantes ed > Oe um valor intelzo fig, tal que n> ng >e.Aln) < f(r) 2 Pralirminares fli Elsborar um algoritmo, nao recursive, para determinar o elemento {4 da seqiiéncia, cuja complexidade seja linear em n. 1.21" Determinar a-expressio do elemento f, da seqiiéneia de Fibonacci em termos dea. 1.22" Determinar @ wimero de chamadas recursivas ¢ & complexidade do caguinte algoritmo, para determinar n elamanta fa da seaiéncia de Fibonacci, tungdo s(n) f= san=loentsol senke a n= 2 antito | sento f(a — 1) + fn 2) 123 Considere a saguinte seqiéncia de elermentos g,..-)dm para am dado valor de &. g=F- 1s9k Elaborar um algoritme para determinar o elemento gq da seqtténcia, -cuja complexidade seja O(n). Notas Bibliograficas As obras de Knuth [Kn68|, [Kn69] e [Kn73] formam o texto pionciro que compreende 6 eatudo de algotitmes ¢ estruturas de dades, de forma sis- fitica, Outre importante marco no estudo de algoritmos ¢ © livra de , Hopcroft ¢ Ullman [Ab74]. Os livras de Gonnet ¢ Baeza-Yates [Gol] men, Leistrson ¢ Rivest (Co90] figuram entre os mais abrangentes, a arch. Mencionam-nc, ainda, oz livror de Basse [Baad], Kazen [Kn?] # Froidevaux, Gaudel e Soria [F190]. 0 ostudo da matemitica relacionada, A andlise de algoritmos pode ser encontrado nos livros de Greene ¢ Knuth [Gr82] ¢ Graham, Knuth e Patashoik (Gr89]. O estado da andlise de caso \édio pote ser encontrado no trabalhos de Kemp [Ke&i] ¢ Hofti [Ho] Um segundo livo de Aho, Hoperoft e Ullman [A83] presenta o estudo de estuturas de dades sob o aspecto de tipos abstratos de dados. Em lingua ani [2103], Terada [Te91] © Veloco, portuguesa, mencionam-se os livros de Santos, Azeredo ¢ Furtado [Ve83} 2 Listas Lineares 2.1-Introdugdo Dentre as estruturas de dades néo primitivas, as Iistas lineares so as de munipulagie mais simples. Neste cap(tula, sio discutidos seus algoritmos estruturas de armazenamento. Uma lista linear agrupa informagies referentes a um conjunto de elementos quo, de alguma forma, se relacionam entre si. Ela pode se constituir, por cxemplo, de informagdes sobte os faneiondzios de uma empress, sobre notes de compras, itens de estoque, notas de alunos etc, Na realidade, sfc infmeros os tipos de dados quo podem sor deseritas por listas lineares. Uma lista Finear, ou tabela, €entéo am conjumtode n 20 nds [1], £[2],...,£fn] tais que euas proptiedades estrutuzais decorrem, unicamente, da posigao relativa des. nés dentro da seqiiéncia linear. Tem-~ sen > 0, £[l] 4 0 primeira nd, para 1 < k 1. O problema consiste em ordenar essa lista. © algoritmo utiliza & filas, denotadas por F,,0 £7 £6—1. Sejado aprimento maximo da representacao des chaves na base 6, © algoritma uuad iteragies, em cada wroa.das quais a tabela é percorrida. A primeira o destaca, em cada né, ¢ digito mencs significativo-da representagio b- da chave. Se este for igual a &, a chave carrespondente serd inserida a Fy. Ao terminar o pereurso da tabela, esta se encontra distribusda pelas filas, que devern entio ser concatenadas em seqaéncia, isto-6, Fa, depois Fi, Fy, ele, Para essa tabela, 56 disposta numa ordem diferente da original, © process deve ser repetido levando-se em consideragio « segundo digite a ropresentagio, & assim sucessivamente ati quo tenham sido feitas tamtas dibtribuigéics quantos sin os digitos na chave de ordenagéo. Voja um exemnplo dos ordenagéo na figura 2.8, onde b= 10 ¢d = 2 © algocitmo 2.22 descreve o proceso. A notagio F, + C(j) significa a fila Fy do » lacalizada em E[j], Analogamente, £Uj] 42 |) Estruturas de Dados © Seus Algeritmos labela: 19 18 05 27 @1 26 31 16 02 09 11 21 60 O7 Ttoraglo 1: 18 dietribuigto (unidador eimploe) fileg + 60 fila, + 01,81, 11, 21 File 02 Fila 1 Silay Filog 05 File 26,16 Filer: 07,27 Filag fi 13,00 tabela: 60 01 31 11 21 02 13 05 26 16 07 2 19 09 Iteragdn 2; 2* distribuigdo (dezenas simples) filag © 01, 02, 05, 07, OF ‘fil 11, 13, 16, 19 file, + 21,26, 27 filag + a Fila fils + a) filay + Fitos : Fila : tabela: 01 02 05 07 OF 11 13 16 19 21 26 27 MH bo igurn 2.8: Ordenagho por distribuigso Listas Lineares 43 “Fy representa @ remogdo de um elemento da fila F, e sou armazenamento Cli]. Alista £ contém os elementos a seret ordenador, SupSe-se que ax filas Fj tenbasn side inicializadas como vagias. algoritmo 2.22: Ordenagéa por distribuigio: para is ly...d tage rere j= mn face mo digito menos significative da represontagio de £{j].chave ma base F, & Cl) b= L tag enquante Fy ¢ OD face Ale Fe jit} Ao final do processo, a lista C encontra-se ordenada, Cada operagao de In- clusdo om remagao de um clemento # reallsada ei bea constants, A corn plexidade do algorittio &, portanto, igual a O(nd). Como a implementagiio utiliza b filas, é bvia a necessidade de que estas empreguem alecagio en- eaceada, 0 algoritmo exige queseja calculada, previamente, a representagiio lo carla chave na base 4, Supondo-se que o computador utilize & base 2 part ‘ codificaggo interna, a definigdo 6 = 2 dispensaria tal edleula, Nesse caso, tima forma de acclerar o procesio seria dividir a repreventacio bindria em grupos de m bits eonsecutivos, # que corre:ponderia a utibizar a base 2" Ente osequipamentos de processamento de dados, procursores des. comput \Joces, um dos mais impartantes fol 2 elassificadora de cartes. Esta ofetua h ordanagiie fiston doe eariées, segundo chaves representadas por perfurages Jocalizadas om 12 altaras diferentes no cartlo, o que permitia ordenagio al- fahética, O prinefpio utilizado era o da ordenacio por distribuicdo. Cada fila correspondia & um escaninka existente no equipamento, A distribuigin tw mocnica, mas a concatenagao se redlirava manualmente. 2.7.3 - Listas circulares A bosea orm uma tabela ordenada, apresentads na sogio 2.7.1, pade ser can: slderada. pouce eficiente quando comparada. x outras bn inenelonadas, Uma pequena madificacéo na estrutura fisiea da lista poo rer 44 Estruturas de Dados « Seus Algoritmos de grande auxilio: obrigar o dltimo né da lista a apontar para o nd-cabega, criando assitn uma lista civetlar eneadeada, como 6 visto-na figura 2.9. Doses. forma, o teste de fim de lista nunca. ¢ satisfelto, A preocupagio passa a ser um critésio de parada que possa ser incorporade ao teste da busca propria- mente dita, A solugio € calorar a chave procaurada no né-cabega, de forma. que uma resposta. nositiva soja sempre encontrada. EZA-Hoe TF Figura 2.9: Lista 0 algoritmo 2.23 aprecenta & nova busca, no caso de listas erdenadas. 0 pontelro port tem 0 valor de pilista se o elemento nfo é encontrade, Natural- mente, modificagies correspondentes devem ser introduzides nos algoritmos do insergia e remagéa, aigoritao 2.23: Busca numa lista circular encadeada ordenada procedinento busca-cir(z,ant,pont) ant = ptlista pllista T chaves= 2 pont := pilista | .proz fenquanto pont | .chave <2 faga ant := pont pont := pont T .prox ne pont x pllista entko “chave Incalizada” nonSo “chave nao localizada” No caso de i nie ordenar (com. as devidas adaptagios 0 mesmo prinefpio pode ser empregado, Uintas Lineares 65 2.7.4~ Listas duplamente encadeadas Now algoritmos vistos até agora para Listas Lineares wtilizando alocacio en- cadeada, o ponteiro ant se mostrou sempre til. Sua fungio ¢ “rastrear™ 0 ponteizo que percorze asta, permitindo sempre retornoan aé anterior. Al- jumas vezes, entretanto, isto nan ésuficlente, pols pade-se-desejar 0 percurso ‘ia lista nos dois sentidos indiferentemnente. Nesses €3505, o gasto de memdnta. iimposto por un nove campo de ponteizo pade ser justificado pela economia. om no reprocessar praticamente a lista inteira. A figura 2.10 apresenta ona lista cirewlar duplamente cnendeada, eam né-cabege, que incarpora ess novo campe de ponteire. Or camper de pontelros tomam os nomes de ant (apontando para. né anterior) e post (apontando 0 né seguinte). Note-se, ovteetanto, que listas née eirculares e listas tem né-caheca podem também duplamente encadeadas. (0 algoritmos de busea, insargéo e remacio em tabelas ordenadas sho muito simples, sendo apresentados a seguir. Na busca, a fungio retorna indicando o 16 procurade ow, se este nao for encontrado, o né que seria seu consecutiv. ‘Observe nas figuras 2.11 ¢ 2.12 as modificagdes acarretadas por uma inseryio Viguro 2.10: Lista duplamente encadesda Algoritmo 2.24: Busca. em uma lista duplamente encadeada ordenada fungo busca-dayd2) utiino = ptliste } ant aS ullime ft .chave entio pont z= ptlista | post enquante port | chave <2 faga pont i= pont | .praz ace-dup = pont panto busco-dup im pilisio 46 J Estruturas de Dados ¢ Seus Algoritmos Figura 2.12: Remogio em lista duplamente encadeada, algoritmo 2.26: Insergdo de um né em uma lista duplatente encadeada, pont := busea-dup(2) 0 pon! = ptlista ou poni | .chave # 2 entio anterior := pont T ant ecupar(pt) % solicitar nd pT info = nove-valor ‘% inicializar nd 9G acertar lista pont | ant = pt santo “el 0 jh a0 inka” Listas Lineares 47 algoritmo 2.26: Remogéo de um nd em ums liste duplamente encadeada busea-dupy x) na pont # pilista a pont t chave = = ents anterior t= pont | .ant ‘posterior i= pont |. post anterior | post = posterior 5% acertur liste, posterior | .ant = anterior valor-reeuperado:= pont] .info % utilizar nd" desocupar( port} % devolver nd sonfo “elemento ao se encontra na lista” pont 27.5 — Aplicaga Um problema que pode ser caracterizado como ama aplicagio de Listas li neates é a ordenagao topolégiea. Sua importincla se deve a6 fato de tor uso potencial todas as vezes em que o problema abordade envolve ama vu parcial, ordenag&o topolégica ma ontem parcial de um conjanto $ & uma relagiio entre os objetas de S, ropresentada pelo simbolo "<", satisfazendo as seguintes propriedades para cquuer objetos 2, ¥-¢ 2, nin necessariamente distintos em 5: i) so 2 4 yey 2, onto s x = (transitive); fi) se 2 4 ye ys, emtdio 2 = y (antl-simétrica); ill) x + x (reflexive). A notagio x < y pode ser lida “x procede ou iguala y". Sez yea #3, wscrove-se x + ye diz- se “x precede y*. Tem-se entio: 1) wo #4 ye yx, entto x» (transitiva): i") no 2 < y, entiio yf = {assimétrics); ih") a & (irreflexiva). nifiea “y nfo precede x", Assume-se aqui que $é um 1a wer que se deseja trabalhar no computador. agho y # = Multos exemplos Intereasantes podem ser mencionados como utilisagiio da fondem parcial. Entre outros, a. execugéo de um conjunto de tarefas neces silas, por exemplo, & montagem deem automével. Uma ordem parcial 4B J Estruturas de Dados « Seus Algeritmos dessas tarefas pode ser representada como na figura 2.19. Cada caixa na figura representa uma tarefa a ser executeda; cada tarefa é numerada arbi- trariamente, Se existe a indicagio de um caminho da caixa 2 para a calxa vy, isto significa que a tarefa x deve ser executada antes da tarefa y. Figura 213: RepresentaeSa de ordem parcial A ordenagéa topolégica trata de imergir a ordem parcial em uma ordem linear, isto 6 rearrumar os objetos numa seqiléncia ay, @p,-.-saq tal que sempre que aj 2, tal que Alelemin nio pormita a formagio de bloces menores do que ¢. Suponha que pilleltads a reserva de um bloco de tamanko J © que-o bloco seleclonadlo Hista portun tamanha ¥ > b, onde b' 6 < c. Neavo enso, m iddia 4 tar a0 bi a porgée rostante bt ~ b, - oserva