ebook img

Entwurf und Analyse von Algorithmen PDF

393 Pages·2012·3.32 MB·German
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Entwurf und Analyse von Algorithmen

Studienbücher Informatik Markus Nebel Entwurf und Analyse von Algorithmen Prof. Dr. Markus Nebel Fachbereich Informatik Technische Universität Kaiserslautern Deutschland ISBN 978-3-8348-1949-9 ISBN 978-3-8348-2339-7 (eBook) DOI 10.1007/978-3-8348-2339-7 Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar. Springer Vieweg © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden 2012 Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Jede Verwertung, die nicht aus- drücklich vom Urheberrechtsgesetz zugelassen ist, bedarf der vorherigen Zustimmung des Verlags. Das gilt insbesondere für Vervielfältigungen, Bearbeitungen, Übersetzungen, Mikroverfilmungen und die Ein- speicherung und Verarbeitung in elektronischen Systemen. Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk be- rechtigt auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichen- und Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürften. Einbandentwurf: KünkelLopka Medienentwicklung, Heidelberg Gedruckt auf säurefreiem und chlorfrei gebleichtem Papier Springer Vieweg ist eine Marke von Springer DE. Springer DE ist Teil der Fachverlagsgruppe Springer Science+Business Media. www.springer-vieweg.de V Vorwort Plat KenntnisseübereffizienteAlgorithmenundDatenstrukturensindeinederzentralenVorausset- zungen für die Entwicklung leistungsfähiger Programme. Insofern ist es wichtig, für grundle- gendeProblemederInformatikgutealgorithmischeLösungenzukennenundzuverstehen,wie diesezuLösungenkomplexererAufgabenkombiniertwerdenkönnen.Entsprechendbehandelt dieses Buch – wie für Lehrbücherzu diesem Themenkomplexüblich – eine Vielzahl bekann- terDatenstrukturenundAlgorithmenzusoelementarenAufgabenwiedasSortierenvonDaten, dasunterhalteneinesWörterbuchsundviele mehr.Doch nichtfüralle Probleme,denenwir in unsererberuflichenoderakademischenPraxisbegegnen,gelingteineLösungnurausbereitsbe- kanntenBausteinen;in diesem Fall ist der Weg zu einem Algorithmusdeutlichsteiniger. Über dieJahrehabensichjedochverschiedeneHerangehensweisen–Entwurfsmethodengenannt–be- währt,mitderenHilfedieAuseinandersetzungmiteinemneuenProblemstrukturiertundentlang vorgezeichneterPfadeerfolgenkann.AuchsolcheKonzeptewerdenwirbehandeln.Mitdiesem StandardinhaltthemenverwandterWerkewärederimTitelgenannteEntwurfvonAlgorithmen abgedeckt.DochindiesemBuchwollenwirweitergehen,unddiesausgutemGrund.Stehenuns verschiedeneAlgorithmen(und/oderDatenstrukturen)zurLösungdesselbenProblemszurVer- fügung–unddasisteigentlichderRegelfall–fürwelchensollenwirunsentscheiden?Siewer- denmirsofortbegegnen“NatürlichfürdenBesten”,dochgenaudafängtdieCruxan,dennesist keinesfallsoffensichtlich,wiewirdieGüteeinerLösungbewertensollen.AusdiesemGrundeist einzweiter,wesentlicherAspektderAbhandlungindiesemBuchdieAnalysevonAlgorithmen undDatenstrukturenunddiedafürnotwendigenmathematischenMethoden.Diedabeierzielen Ergebnissegestattenesunsnichtnur,verschiedeneAlgorithmenmiteinanderzuvergleichen,sie liefernunsauchEinsichten,warumbestimmteLösungennichtbesserseinkönnenalssieessind und zeigen uns auf, welche Änderungen am Algorithmus notwendig werden, um seine Leis- tungsfähigkeitzusteigern.BeialldiesenBetrachtungenfindetdersog.Average-Case,d.h.eine BetrachtungdergemitteltenKostenunterAnnahmeeinermöglichstrealistischenVerteilungder Eingaben,indiesemBuchbesondereBerücksichtigung.DiesträgtdemUmstandRechnung,dass die üblicherweisefürdenVergleichvon AlgorithmenherangezogeneBetrachtungdesschlech- testenFalls(Worst-Case)ausSichtderpraktischenAnwendungofteinverzerrtesBildzeichnet, da er meist höchst unwahrscheinlich ist und in der Praxis entsprechend kaum vorkommt. Bei alledem lassen wir Details der ImplementierungnichtaußerAcht, denn auchdiese könnenfür dieEffizienzunddamitfürunsereAnalysewesentlichsein.Entsprechendpräsentierenwirneben dengenanntentheoretischenBetrachtungenmeistaucheineausformulierteImplementierungder AlgorithmenundDatenstrukturen. AndiesemPunktkönntemaneigentlichzufriedensein,wäredanichteinDornimAugederIn- formatik:NichtfüralleProblemeexistiereneffizienteLösungen,jaesistsogarmöglich,dasswir einemProblembegegnen,fürdaseinComputergarnichtinderLageist,eineLösungzuberech- nen,unabhängigdavon,wievieleRessourcen(Zeit,Platz) wirihmdafürzurVerfügungstellen. VI FürdenstudiertenInformatikeristeswichtig,sichderExistenzsolcherSituationenbewusstzu sein undentsprechendeProblemezu erkennen.Deshalb rekapitulierenwir essentielle Erkennt- nisseausdemBereichderAlgorithmentheorie(eineweiterführendeBetrachtungwürdedenRah- mensprengenundistGegenstandunseresLehrbuchsFormaleGrundlagenderProgrammierung [Neb12]),undbehandelnausführlichdasThemadersog.NP-Vollständigkeit.Letzteresistein KonzeptdertheoretischenInformatik,dasEinsichtenindieWeltder(vermutlich)“nichteffizi- entlösbaren”Problemeliefert. Wir beschließendas Buch mit einer Betrachtungverschiedener Methoden,mitderenHilfewirversuchenkönnen,unssolchenProblemendennochzustellen. DiesesWerkistübervieleJahregewachsenundhatseinenUrsprunginderVorlesung“Theore- tischeInformatik1”,dieichimWintersemester2003/2004anderUniversitätFrankfurtgehalten habe.DamalskonnteichdieentsprechendenVorlesungs-SkriptevonProf.Dr.RainerKempso- wievonProf.Dr.GeorgSchnitgerundMaikWeinardalsVorlagenverwendenundderenInhalte nach meinen Vorstellungen ergänzen und kombinieren. Seit meinem Wechsel an die Techni- scheUniversitätKaiserslauternimJahr2005halteichdortregelmäßigdieinhaltlichverwandte Vorlesung“EntwurfundAnalysevonAlgorithmen”.EntsprechendentwickelteichdasMaterial weiterundInhaltewiedieString-AlgorithmenunddieKomplexitätstheoriewurdenergänzt.Die zahlreichenund durchwegpositiven Rückmeldungenmeiner Studentinnenund Studenten zum letztlichsoentstandenManuskripthabenmichschließlichdazubewogen,dasGanze–nachei- ner erneutenÜberarbeitung– als Buch zu veröffentlichen.Herausgekommenist ein Werk, das im Umfangsicher die in einer einzelnenVorlesungvermittelbareStoffmengeübersteigt.Es ist jedocheinfach möglich,eine sinnvolleStoffauswahlzu treffenund dabeiunterschiedliche,der Hörerschaftangepasste Akzente zu setzen. Alle Kapitel sowie die zugehörigenAufgabensind dabeisogehalten,dasssieimBachelor-Bereichunterrichtetwerdenkönnen.Auchkanndasge- samteWerkproblemlosfüreinautodidaktischesStudiumherangezogenwerdenundinteressierte Studierendekönnenso die in einer VorlesungnichtbehandeltenKapiteloderSektioneneigen- ständigerarbeiten. SelbstverständlichhatteichauchUnterstützungbeiderErstellungdiesesBuches,undichmöch- tenichtversäumen,denbeteiligtenPersonen(inchronologischerReihenfolgeihrerBeiträge)zu danken.EssinddiesmeinLehrerundMentorProf.Dr.RainerKemp,derinzwischenleiderver- storbenist,sowieProf.Dr.GeorgSchnitger,denenichfürdieUnterstützungbeiderErstellung derUrformdiesesWerkessowieletztgenanntemfürderÜberlassungmancherMaterialiendanke. HerrUliLaubegiltmeinDankfürdieErzeugungverschiedenerGrafiken.FrankWeinbergund HannahFudeustrugenwährendderBetreuungmeinerVorlesungeninKaiserslauterndazubei, manchenFehlerzu entdeckenundersannenÜbungsaufgabenzudem Stoff.Als letztesmöchte ichHerrnProf.Dr.WalterHowerdanken,deralsHerausgeberdieserReihediefastfinaleForm desBuchesKorrekturlas. Allen Studenten wünsche ich viel Vergnügen beim Studium dieses Werkes, den notwendigen Fleiß,umdenbehandeltenStoffzu vertiefen,undletztlichvielFreudean dendabeigewonnen Erkenntnissen und ihrer Anwendung. Allen Dozenten wünsche ich, dass ihnen das vorliegen- de Buch eine Hilfe dabeisein möge, den spannendenStoff zum Entwurfundder Analyse von Algorithmenzuunterrichten,undletztlichdieselbeFreudedieichverspüre,wennihnmeineStu- dentinnenundStudentenschließlichverinnerlichthaben. KaiserslauternimApril2012 MARKUS E.NEBEL I Inhaltsverzeichnis Plat zh 1 Einleitung 1 1.1 ZieleundÜberblick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Algorithmentheorie–einekurzeEinführung . . . . . . . . . . . . . . . . . . . . 3 1.3 GrundlagenderAnalysevonAlgorithmen . . . . . . . . . . . . . . . . . . . . . 7 1.4 AbstrakteDatentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 1.5 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 34 1.6 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 2 Elementare Datenstrukturen 41 2.1 LineareListen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 2.2 StacksundQueues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 2.3 Mengen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 2.4 GraphenundBäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 2.5 Partitionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 2.6 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 107 2.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 3 Das Wörterbuchproblem 113 3.1 BinäreSuchbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 3.2 BalancierteBäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 3.3 DigitaleSuchbäumeundTries . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 3.4 Hashing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 3.5 DatenstrukturenfürdasInformationRetrieval . . . . . . . . . . . . . . . . . . . 181 3.6 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 183 3.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 4 Graph-Algorithmen 189 4.1 KürzesteWege . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 4.2 MinimaleSpannbäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 4.3 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 199 4.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5 Sortieren 203 5.1 PrimitiveSortier-Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 5.2 Quicksort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 VIII Inhaltsverzeichnis 5.3 Heapsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 5.4 Mergesort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 5.5 DistributionCounting,Radix-ExchangeundRadixsort . . . . . . . . . . . . . . 232 5.6 Sortiernetzwerke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 5.7 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 240 5.8 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 6 String-Algorithmen 245 6.1 String-Matching . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245 6.2 Suffix-Bäume . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 6.3 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 284 6.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284 7 Entwurfsmethoden für Algorithmen 287 7.1 DivideandConquer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287 7.2 DynamischesProgrammieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291 7.3 Greedy-Algorithmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 294 7.4 LinearesProgrammieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 7.5 Transformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309 7.6 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 331 7.7 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 8 Komplexitätstheorie 335 8.1 NP-Vollständigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 338 8.2 WichtigeNP-vollständigeProbleme . . . . . . . . . . . . . . . . . . . . . . . 342 8.3 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 351 8.4 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 9 Entwurfsmethoden für schwere Optimierungsprobleme 353 9.1 BacktrackingundBranch&Bound . . . . . . . . . . . . . . . . . . . . . . . . . 355 9.2 Approximations-AlgorithmenundHeuristiken . . . . . . . . . . . . . . . . . . . 360 9.3 RandomisierteAlgorithmen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369 9.4 QuellenangabenundLiteraturhinweise . . . . . . . . . . . . . . . . . . . . . . . 373 9.5 Aufgaben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373 Anhang 377 A Notationsverzeichnis 379 B Formelsammlung 381 C Syntax der Modell-Programmiersprache 383 Literaturverzeichnis 391 1 1 Einleitung Plat zh 1.1 Ziele und Überblick Ein Computer bedarf der Programmierung,um sinnvoll eingesetzt werden zu können.Möchte man ihn zur Lösung bestimmter Probleme verwenden,wie etwa das Sortieren von Daten oder dieMultiplikationvonMatrizen,somussdieProgrammierungeineVorschriftbeschreiben,die festlegt,inwelcherReihenfolgederComputerwelcheAktionendurchzuführenhat,damitletzt- lich die gesuchte Lösung erzeugt wird. Dabei ist es unsinnig, die Vorschrift für eine einzige Eingabe maßzuschneidern. Ziel muss es sein, alle für das jeweilige Problem sinnvolle Einga- ben nach derselben Vorschrift abzuarbeiten. Eine solche Vorschrift nennen wir im Folgenden Algorithmusundverstehendaruntereinmit(semi-)formalenMittelnendlichbeschriebenes,me- chanischnachvollziehbaresVerfahrenzurLösungeinerKlassevonProblemen.Esseibemerkt, dassdieEndlichkeitderBeschreibungeinesAlgorithmuskeineswegsimpliziert,dasserauchfür alleEingabeneineendlicheBerechnungbeschreibt(warum?). DiesesBuchbefasstsichmitderEntwicklungeffizienterAlgorithmenfürwichtigeProblemein- nerhalbderInformatik.DabeimessenwirdieEffizienzvornehmlichüberdieLaufzeiteinesVer- fahrens,aberauchandereKriterienwie derPlatzbedarfkommenzumEinsatz. Effizienzist ein notwendiges(aberkeinhinreichendes)KriteriumfürguteSoftware(undauchHardware).Dies betrifftalleBereicheinnerhalbderInformatik,wiedieEntwicklungvonInformationssystemen, Betriebssystemen, verteilten Systemen oder Hardware, und alle Anwendungender Informatik, wieinderMolekularbiologie,derLogistik,derPhysikoderChemie.SomitistdieKenntnisder InhalteundMethodendiesesBuchsgrundlegendfüralleStudierendenderInformatik,unabhän- gigvonihrerspäterenSpezialisierung. WiewirindiesemBuchmehrfachsehenwerden,könnennaiveLösungenaufgrundihresgroßen Ressourcenbedarfspraktischunbrauchbarsein.MitHilfedesEinsatzesgeeigneterDatenstruktu- renundalgorithmischerMethodenlassensichabervieleProblemeeffizientlösen.DieEffizienz kannsichdabeiimpraktischenGebraucherweisenoderzuvordurchExperimentebelegtwerden. Besseristesjedoch,einProduktmitGütegarantieherzustellen.Diesgelingtdurchdenformalen Beweis,dassdieverwendeteDatenstrukturund/oderderbenutzteAlgorithmusdasGewünschte leistet(Korrektheitsbeweis),unddieBeschreibungderbenötigtenRessourcen(Analyse).Diesen Wegwerdenwirhierbeschreiten.Leiderwerdenwirdabeieinsehenmüssen,dassselbstderbeste AlgorithmuskombiniertmitdenbestenDatenstrukturenfürmancheProblemenochimmerkeine effizienteLösungliefert. UmfüreingegebenesProblemeineneffizientenAlgorithmuszuentwerfen,bedarfesderKennt- nisse überdasGebiet,ausdemdasProblemstammt. InvielenFällenhandeltessich dabeium Spezialwissen, wie es z. B. in vertiefenden Vorlesung eines Masterstudiums unterrichtetwird. IndiesemgrundlegendenBuchwerdenwirnursolcheProblemebehandeln,fürdiekeinsolches M. Nebel, Entwurf und Analyse von Algorithmen, DOI 10.1007/978-3-8348-2339-7_1, © Vieweg+Teubner Verlag | Springer Fachmedien Wiesbaden 2012 2 1 Einleitung Spezialwissen erforderlichist oder fürdie die entsprechendenKenntnisse problemlosim Buch selbsterworbenwerdenkönnen. Ansonsten ist der Entwurf eines effizienten Algorithmusein Handwerk, wobei Meisterleistun- gen nur mit viel Erfahrung, dem richtigen Gefühl für das Problem und einer Portion Intuition erbracht werden. Damit ist unser Ziel, das notwendige Handwerkszeug bereitzustellen und in erstenAnwendungenpraktischzuerproben. BeidemEntwurfeineseffizientenVerfahrenszurLösungeinesProblemsbedientmansichhäu- fig bereits bekannter effizienter Lösungen bestimmter Teilprobleme. So erkennt man oft sehr schnell,wiedieineinemProblemauftretendenDatenorganisiertseinsollten,damiteineeffizi- enteLösunggelingenkann.MussmanbeispielsweisefürdieschrittweiseLösungdesProblems immer das kleinste Element unter allen noch nicht verarbeiteten Elementen kennen, so bedarf eineeffizienteLösungdesGesamtproblemseineseffizientenZugriffsaufdaskleinsteElement. Damit man in solchen Situationen das Rad nicht immer neu erfinden muss, betrachten wir im Kapitel 2 eine große Anzahl an grundlegenden Datenstrukturen, die es gestatten, die gegebe- nenDatenunterdenverschiedenstenAnforderungeneffizientzuverwalten.IndenKapiteln3,4 und5behandelnwireffizienteLösungenfürStandardproblemewiez. B. dieVerwaltungeines WörterbuchsoderdasSortiereneinerMengevonDaten,dieauchoftalsTeilproblemekomple- xererAufgabenauftreten.ImKapitel6betrachtenwirAlgorithmenzurVerarbeitungvonTexten. DieseAlgorithmenunddiezugehörigenProblemehabeninkürzererZeiterneutgroßeAufmerk- samkeiterhalten,da viele Objekte in der boomendenBioinformatikals Wörter (Texte)kodiert sind,sodassdereneffizienteVerarbeitungdortvongroßerBedeutungist.Kapitel7wendetsich denEntwurfsmethodenzu.EshandeltsichdabeiumStrategienfürdenAlgorithmenentwurfdie nichtimmer,aberdochsehroftzumErfolgführen.Wie eingangsschonerwähnt,könnennicht alle Probleme algorithmisch effizient gelöst werden. Eine formale Charakterisierung all jener Probleme,fürdiedies(mitgroßerWahrscheinlichkeit)nichtmöglichist,lernenwirinKapitel8 kennen;esistdiesdasKonzeptderNP-Vollständigkeit.ZumAbschlusswerdenwirimKapi- tel9Methodenbetrachten,dieesunserlauben,selbstfürschwierigeProblemeausdemBereich derOptimierung,fürdiewirexakteOptimanichteffizientberechnenkönnen,brauchbareLösun- genzubestimmen. ZurErfolgskontrollenachdemDurcharbeitendesBuchesseienhierdieangestrebtenLernziele aufgelistet: • KenntniselementarerDatenstrukturen,ihreEigenschaften,Vor-undNachteile, • KenntniswichtigerEntwurfsmethodenfüreffizienteAlgorithmen, • KenntniseffizienterAlgorithmenfürgrundlegendeProbleme, • KenntnisvonundErfahrungenim UmgangmitMethodenzurAnalysederEffizienzvon AlgorithmenundDatenstrukturen. • Kenntnis der Konzepte und Beweismethoden aus dem Bereich der Komplexitätstheorie undderbehandeltenNP-vollständigenProbleme. • KenntnisderbehandeltenStrategienzumEntwurfvonOptimierungsalgorithmenimKon- textschwererProbleme.

Description:
Kenntnisse über effiziente Algorithmen und Datenstrukturen sind eine der zentralen Voraussetzungen für die Entwicklung leistungsfähiger Programme. Daher ist es wichtig, für grundlegende Probleme der Informatik gute algorithmische Lösungen zu kennen und zu verstehen, wie diese zu Lösungen kompl
See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.