Algorithmen und Datenstrukturen eine Einführung mit Java

Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Saake, Gunter 1960- (VerfasserIn), Sattler, Kai-Uwe 1968- (VerfasserIn)
Format: Buch
Sprache:German
Veröffentlicht: Heidelberg dpunkt.verlag 2021
Ausgabe:6., überarbeitete und erweiterte Auflage
Schlagworte:
Online-Zugang:Inhaltsverzeichnis
Inhaltsverzeichnis
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!

MARC

LEADER 00000nam a22000008c 4500
001 BV046908889
003 DE-604
005 20210715
007 t
008 200923s2021 gw a||| |||| 00||| ger d
015 |a 20,N18  |2 dnb 
016 7 |a 1208722581  |2 DE-101 
020 |a 9783864907692  |c hbk  |9 978-3-86490-769-2 
020 |a 3864907691  |9 3-86490-769-1 
035 |a (OCoLC)1152650288 
035 |a (DE-599)DNB1208722581 
040 |a DE-604  |b ger  |e rda 
041 0 |a ger 
044 |a gw  |c XA-DE-BW 
049 |a DE-703  |a DE-522  |a DE-1102  |a DE-860  |a DE-1050  |a DE-706  |a DE-B768  |a DE-91G  |a DE-29T  |a DE-573  |a DE-Aug4  |a DE-92  |a DE-523  |a DE-739  |a DE-859  |a DE-19  |a DE-863  |a DE-634  |a DE-898  |a DE-M347  |a DE-83  |a DE-355  |a DE-1028  |a DE-20 
084 |a ST 250  |0 (DE-625)143626:  |2 rvk 
084 |a ST 230  |0 (DE-625)143617:  |2 rvk 
084 |a ST 130  |0 (DE-625)143588:  |2 rvk 
084 |a ST 134  |0 (DE-625)143590:  |2 rvk 
084 |a DAT 362  |2 stub 
084 |a DAT 530  |2 stub 
084 |a DAT 455  |2 stub 
084 |a 004  |2 sdnb 
100 1 |a Saake, Gunter  |d 1960-  |e Verfasser  |0 (DE-588)122164458  |4 aut 
245 1 0 |a Algorithmen und Datenstrukturen  |b eine Einführung mit Java  |c Gunter Saake, Kai-Uwe Sattler 
250 |a 6., überarbeitete und erweiterte Auflage 
264 1 |a Heidelberg  |b dpunkt.verlag  |c 2021 
300 |a xix, 588 Seiten  |b Illustrationen, Diagramme 
336 |b txt  |2 rdacontent 
337 |b n  |2 rdamedia 
338 |b nc  |2 rdacarrier 
650 0 7 |a Algorithmus  |0 (DE-588)4001183-5  |2 gnd  |9 rswk-swf 
650 0 7 |a Java  |g Programmiersprache  |0 (DE-588)4401313-9  |2 gnd  |9 rswk-swf 
650 0 7 |a Datenstruktur  |0 (DE-588)4011146-5  |2 gnd  |9 rswk-swf 
653 |a Informatik-Lehrbuch 
653 |a Praktische Informatik 
653 |a Java 
653 |a Datenstrukturen 
653 |a Algorithmische Grundbegriffe 
653 |a Grundkonzepte Programmierung 
653 |a Datentypen 
653 |a Algorithmenparadigmen 
653 |a Grundlegende Datenstrukturen 
653 |a Hashverfahren 
653 |a Graphen 
653 |a Algorithmenmuster 
653 |a Dynamische Programmierung 
653 |a Datentypen in Java 
655 7 |0 (DE-588)4123623-3  |a Lehrbuch  |2 gnd-content 
689 0 0 |a Datenstruktur  |0 (DE-588)4011146-5  |D s 
689 0 1 |a Algorithmus  |0 (DE-588)4001183-5  |D s 
689 0 2 |a Java  |g Programmiersprache  |0 (DE-588)4401313-9  |D s 
689 0 |5 DE-604 
689 1 0 |a Algorithmus  |0 (DE-588)4001183-5  |D s 
689 1 1 |a Datenstruktur  |0 (DE-588)4011146-5  |D s 
689 1 |5 DE-604 
700 1 |a Sattler, Kai-Uwe  |d 1968-  |e Verfasser  |0 (DE-588)120420392  |4 aut 
710 2 |a Dpunkt.Verlag (Heidelberg)  |0 (DE-588)6085529-0  |4 pbl 
776 0 8 |i Erscheint auch als  |n Online-Ausgabe, PDF  |z 978-3-96910-066-0 
776 0 8 |i Erscheint auch als  |n Online-Ausgabe, EPUB  |z 978-3-96910-067-7 
776 0 8 |i Erscheint auch als  |n Online-Ausgabe, MOBI  |z 978-3-96910-068-4 
856 4 2 |m DNB Datenaustausch  |q application/pdf  |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA  |3 Inhaltsverzeichnis 
856 4 2 |m Digitalisierung UB Passau - ADAM Catalogue Enrichment  |q application/pdf  |u http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000005&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA  |3 Inhaltsverzeichnis 
999 |a oai:aleph.bib-bvb.de:BVB01-032318396 

Datensatz im Suchindex

DE-BY-863_location 1000
DE-BY-FWS_call_number 1000/ST 134 S111(6)
DE-BY-FWS_katkey 874267
DE-BY-FWS_media_number 083101193107
DE-BY-TUM_call_number 0303/DAT 530 2005 L 660(6)+4
0303/DAT 530 2005 L 660(6)+2
0303/DAT 530 2005 L 660(6)+3
0303/DAT 530 2005 L 660(6)
0303/DAT 530 2005 L 660(6)+5
DE-BY-TUM_katkey 2506557
DE-BY-TUM_media_number 040008595386
040008595400
040008595375
040008595397
040008595411
_version_ 1816714630231228416
adam_text INHALTSVERZEICHNIS I GRUNDLEGENDE KONZEPTE 1 1 VORBEMERKUNGEN UND UEBERBLICK .......................................... 3 1.1 INFORMATIK, ALGORITHMEN UND DATENSTRUKTUREN ......................... 3 1.2 HISTORISCHER UEBERBLICK: ALGORITHMEN .......................................... 5 1.3 HISTORIE VON PROGRAMMIERSPRACHEN UND JAVA ............................ 6 1.4 GRUNDKONZEPTE DER PROGRAMMIERUNG IN JAVA ............................ 9 2 ALGORITHMISCHE GRUNDKONZEPTE ............................................ 17 2.1 INTUITIVER ALGORITHMUSBEGRIFF ....................................................... 17 2.1.1 BEISPIELE FUER ALGORITHMEN ................................................ 17 2.1.2 BAUSTEINE FUER ALGORITHMEN .............................................. 21 2.1.3 PSEUDOCODE-NOTATION FUER ALGORITHMEN ......................... 23 2.1.4 STRUKTOGRAMME ................................................................. 28 2.1.5 REKURSION ............................................................................ 29 2.2 SPRACHEN UND GRAMMATIKEN ......................................................... 32 2.2.1 BEGRIFFSBILDUNG ................................................................... 33 2.2.2 REGULAERE AUSDRUECKE ........................................................... 34 2.2.3 BACKUS-NAUR-FORM (BNF) .............................................. 35 2.3 ELEMENTARE DATENTYPEN ............................................................... 36 2.3.1 DATENTYPEN ALS ALGEBREN .................................................. 37 2.3.2 SIGNATUREN VON DATENTYPEN ............................................ 37 2.3.3 DER DATENTYP BOOL ........................................................... 39 2.3.4 DER DATENTYP INTEGER .................................................... 40 2.3.5 FELDER UND ZEICHENKETTEN ................................................ 41 2.4 TERME .............................................................................................. 43 2.4.1 BILDUNG VON TERMEN ......................................................... 43 2.4.2 ALGORITHMUS ZUR TERMAUSWERTUNG ................................. 45 2.5 DATENTYPEN IN JAVA ....................................................................... 46 2.5.1 PRIMITIVE DATENTYPEN ...................................................... 46 2.5.2 REFERENZDATENTYPEN ........................................................... 48 2.5.3 OPERATOREN ......................................................................... 53 3 ALGORITHMENPARADIGMEN ........................................................ 57 3.1 UEBERBLICK UEBER ALGORITHMENPARADIGMEN .................................... 57 3.2 APPLIKATIVE ALGORITHMEN ............................................................... 58 3.2.1 TERME MIT UNBESTIMMTEN ................................................ 58 3.2.2 FUNKTIONSDEFINITIONEN ....................................................... 59 3.2.3 AUSWERTUNG VON FUNKTIONEN ............................................ 60 3.2.4 ERWEITERUNG DER FUNKTIONSDEFINITION ............................. 61 3.2.5 APPLIKATIVE ALGORITHMEN .................................................. 62 3.2.6 BEISPIELE FUER APPLIKATIVE ALGORITHMEN ............................ 63 3.3 IMPERATIVE ALGORITHMEN ............................................................... 71 3.3.1 GRUNDLAGEN IMPERATIVER ALGORITHMEN .............................. 71 3.3.2 KOMPLEXE ANWEISUNGEN ..................................................... 74 3.3.3 BEISPIELE FUER IMPERATIVE ALGORITHMEN .............................. 77 3.4 DAS LOGISCHE PARADIGMA ............................................................... 82 3.4.1 LOGIK DER FAKTEN UND REGELN .......................................... 83 3.4.2 DEDUKTIVE ALGORITHMEN ..................................................... 84 3.5 WEITERE PARADIGMEN ..................................................................... 89 3.5.1 GENETISCHE ALGORITHMEN .................................................. 90 3.5.2 NEURONALE NETZE ............................................................... 93 3.6 UMSETZUNG IN JAVA ....................................................................... 97 3.6.1 AUSDRUECKE UND ANWEISUNGEN .......................................... 97 3.6.2 METHODEN ............................................................................ 106 3.6.3 APPLIKATIVE ALGORITHMEN UND REKURSION ....................... 112 4 LITERATURHINWEISE ZUM TEIL I .................................................. 119 II ALGORITHMEN 121 5 AUSGEWAEHLTE ALGORITHMEN ....................................................... 123 5.1 SUCHEN IN SORTIERTEN FOLGEN ......................................................... 123 5.1.1 SEQUENZIELLE SUCHE ........................................................... 124 5.1.2 BINAERE SUCHE ..................................................................... 126 5.2 SORTIEREN ........................................................................................ 130 5.2.1 SORTIEREN: GRUNDBEGRIFFE ................................................... 131 5.2.2 SORTIEREN DURCH EINFUEGEN ................................................ 131 5.2.3 SORTIEREN DURCH SELEKTION ................................................ 134 5.2.4 SORTIEREN DURCH VERTAUSCHEN: BUBBLESORT ..................... 135 5.2.5 SORTIEREN DURCH MISCHEN: MERGESORT ............................. 138 5.2.6 QUICKSORT ............................................................................ 141 5.2.7 SORTIEREN DURCH VERTEILEN: RADIXSORT ............................. 145 5.2.8 SORTIERVERFAHREN IM VERGLEICH .......................................... 149 6 FORMALE ALGORITHMENMODELLE ................................................ 155 6.1 REGISTERMASCHINEN ....................................................................... 155 6.2 ABSTRAKTE MASCHINEN ................................................................... 164 6.3 MARKOV-ALGORITHMEN ..................................................................... 168 6.4 CHURCH * SCHE THESE ....................................................................... 174 6.5 INTERPRETER FUER FORMALE ALGORITHMENMODELLE IN JAVA ............... 176 6.5.1 JAVA: MARKOV-INTERPRETER .................................................. 176 6.5.2 REGISTERMASCHINE IN JAVA ................................................ 178 7 EIGENSCHAFTEN VON ALGORITHMEN ............................................185 7.1 BERECHENBARKEIT UND ENTSCHEIDBARKEIT ...................................... 185 7.1.1 EXISTENZ NICHTBERECHENBARER FUNKTIONEN ....................... 186 7.1.2 KONKRETE NICHTBERECHENBARE FUNKTIONEN ....................... 188 7.1.3 DAS HALTEPROBLEM ............................................................. 190 7.1.4 NICHTENTSCHEIDBARE PROBLEME .......................................... 192 7.1.5 POST * SCHES KORRESPONDENZPROBLEM .................................. 193 7.2 KORREKTHEIT VON ALGORITHMEN ...................................................... 195 7.2.1 RELATIVE KORREKTHEIT ......................................................... 196 7.2.2 KORREKTHEIT VON IMPERATIVEN ALGORITHMEN ..................... 196 7.2.3 KORREKTHEITSBEWEISE FUER ANWEISUNGSTYPEN ..................... 199 7.2.4 KORREKTHEIT IMPERATIVER ALGORITHMEN AN BEISPIELEN . . . 202 7.2.5 KORREKTHEIT APPLIKATIVER ALGORITHMEN ............................. 207 7.3 KOMPLEXITAET .................................................................................... 208 7.3.1 MOTIVIERENDES BEISPIEL ...................................................... 208 7.3.2 ASYMPTOTISCHE ANALYSE .................................................... 210 7.3.3 KOMPLEXITAETSKLASSEN ........................................................ 214 7.3.4 ANALYSE VON ALGORITHMEN ................................................ 216 8 ENTWURF VON ALGORITHMEN ...................................................... 219 8.1 ENTWURFSPRINZIPIEN ......................................................................... 219 8.1.1 SCHRITTWEISE VERFEINERUNG ................................................ 219 8.1.2 EINSATZ VON ALGORITHMENMUSTERN .................... 224 8.1.3 PROBLEMREDUZIERUNG DURCH REKURSION ........................... 225 8.2 ALGORITHMENMUSTER: GREEDY ........................................................ 226 8.2.1 GREEDY-ALGORITHMEN AM BEISPIEL .................................... 226 8.2.2 GREEDY: OPTIMALES KOMMUNIKATIONSNETZ ....................... 227 8.2.3 VERFEINERUNG DER SUCHE NACH BILLIGSTER KANTE ............... 228 8.3 REKURSION: DIVIDE-AND-CONQUER .................................................. 231 8.3.1 DAS PRINZIP TEILE UND HERRSCHE ................................. 231 8.3.2 BEISPIEL: SPIELPLAENE FUER TURNIERE ...................................... 232 8.4 REKURSION: BACKTRACKING ............................................................... 234 8.4.1 PRINZIP DES BACKTRACKING ................................................ 235 8.4.2 BEISPIEL: DAS ACHT-DAMEN-PROBLEM ............................... 237 8.4.3 BEISPIEL: TIC TAC TOE MIT BACKTRACKING ...................... 240 8.5 DYNAMISCHE PROGRAMMIERUNG ...................................................... 242 8.5.1 DAS RUCKSACKPROBLEM ....................................................... 243 8.5.2 REKURSIVE LOESUNG DES RUCKSACKPROBLEMS ..................... 245 8.5.3 PRINZIP DER DYNAMISCHEN PROGRAMMIERUNG ................... 246 9 PARALLELE UND VERTEILTE BERECHNUNGEN .................................. 249 9.1 GRUNDLAGEN .................................................................................... 249 9.2 MODELL DER PETRI-NETZE ................................................................. 252 9.2.1 DEFINITION VON PETRI-NETZEN ............................................ 252 9.2.2 FORMALISIERUNG VON PETRI-NETZEN .................................... 256 9.2.3 DAS BEISPIEL DER FUENF PHILOSOPHEN .................................. 258 9.3 PROGRAMMIEREN NEBENLAEUFIGER ABLAEUFE ...................................... 260 9.3.1 KOORDINIERTE PROZESSE ....................................................... 261 9.3.2 PROGRAMMIEREN MIT SEMAPHOREN .................................... 262 9.3.3 PHILOSOPHENPROBLEM MIT SEMAPHOREN ........................... 264 9.3.4 VERKLEMMUNGSFREIE PHILOSOPHEN ...................................... 265 9.4 NEBENLAEUFIGE BERECHNUNGEN IN JAVA .......................................... 268 9.4.1 THREADS UND WECHSELSEITIGER AUSSCHLUSS ....................... 268 9.4.2 PARALLELISIERUNG IN JAVA ..................................................... 271 9.4.3 DAS PHILOSOPHENPROBLEM IN JAVA .................................... 274 10 LITERATURHINWEISE ZUM TEIL II ................................................ 281 III DATENSTRUKTUREN 283 11 ABSTRAKTE DATENTYPEN ............................................................. 285 11.1 SIGNATUREN UND ALGEBREN ............................................................. 286 11.2 ALGEBRAISCHE SPEZIFIKATION ........................................................... 288 11.2.1 SPEZIFIKATIONEN UND MODELLE ............................................ 289 11.2.2 TERMALGEBRA UND QUOTIENTENTERMALGEBRA ..................... 290 11.2.3 PROBLEME MIT INITIALER SEMANTIK ...................................... 293 11.3 BEISPIELE FUER ABSTRAKTE DATENTYPEN ............................................ 294 11.3.1 DER KELLERSPEICHER (STACK) .............................................. 295 11.3.2 BEISPIEL FUER KELLERNUTZUNG ................................................ 297 11.3.3 DIE WARTESCHLANGE (QUEUE) ............................................ 301 11.4 ENTWURF VON DATENTYPEN ............................................................. 303 12 KLASSEN, SCHNITTSTELLEN UND OBJEKTE IN JAVA ..................... 305 12.1 GRUNDZUEGE DER OBJEKTORIENTIERUNG ............................................ 305 12.2 KLASSEN UND OBJEKTE IN JAVA ....................................................... 308 12.3 VERERBUNG ...................................................................................... 313 12.4 ABSTRAKTE KLASSEN UND SCHNITTSTELLEN ........................................ 320 12.5 AUSNAHMEN .................................................................................... 323 12.6 UMSETZUNG ABSTRAKTER DATENTYPEN ............................................ 326 12.7 LAMBDA-AUSDRUECKE ....................................................................... 329 13 GRUNDLEGENDE DATENSTRUKTUREN ............................................ 335 13.1 STACK UND QUEUE ALS DATENTYPEN .............................................. 335 13.1.1 IMPLEMENTIERUNG DES STACKS ............................................ 339 13.1.2 IMPLEMENTIERUNG DER QUEUE ............................................ 340 13.1.3 BEWERTUNG DER IMPLEMENTIERUNGEN ............................... 342 13.2 VERKETTETE LISTEN ............................................................................ 343 13.3 DOPPELT VERKETTETE LISTEN ............................................................. 350 13.4 SKIP-LISTEN ...................................................................................... 355 13.5 DAS ITERATOR-KONZEPT ................................................................... 358 13.6 JAVA COLLECTION FRAMEWORK ......................................................... 361 13.7 GENERICS IN JAVA ........................................................................... 365 14 BAEUME ........................................................................................ 369 14.1 BAEUME: BEGRIFFE UND KONZEPTE .................................................. 369 14.2 BINAERER BAUM: DATENTYP UND BASISALGORITHMEN ....................... 372 14.2.1 DER DATENTYP BINAERER BAUM ...................................... 372 14.2.2 ALGORITHMEN ZUR TRAVERSIERUNG ........................................ 377 14.3 SUCHBAEUME .................................................................................... 382 14.3.1 SUCHEN IN SUCHBAEUMEN .................................................... 383 14.3.2 EINFUEGEN UND LOESCHEN ...................................................... 386 14.3.3 KOMPLEXITAET DER OPERATIONEN .......................................... 391 14.4 AUSGEGLICHENE BAEUME ................................................................... 392 14.4.1 ROT-SCHWARZ-BAEUME ........................................................ 393 14.4.2 AVL-BAEUME ....................................................................... 402 14.4.3 B-BAEUME ........................................................................... 410 14.5 DIGITALE BAEUME ............................................................................. 423 14.5.1 TRIES .................................................................................... 424 14.5.2 PATRICIA-BAEUME .................................................... 429 14.6 PRAKTISCHE NUTZUNG VON BAEUMEN .............................................. 431 14.6.1 SORTIEREN MIT BAEUMEN: HEAPSORT .................................... 431 14.6.2 SETS MIT BINAEREN SUCHBAEUMEN ........................................ 438 15 HASHVERFAHREN ........................................................................... 443 15.1 GRUNDPRINZIP DES HASHENS ........................................................... 443 15.2 GRUNDLAGEN UND VERFAHREN .......................................................... 444 15.2.1 HASHFUNKTIONEN ................................................................. 445 15.2.2 BEHANDLUNG VON KOLLISIONEN ............................................ 446 15.2.3 AUFWAND BEIM HASHEN .................................................... 450 15.2.4 HASHEN IN JAVA ................................................................. 452 15.2.5 CUCKOO-HASHING ............................................................... 456 15.3 DYNAMISCHE HASHVERFAHREN .......................................................... 459 15.3.1 GRUNDIDEEN FUER DYNAMISCHE HASHVERFAHREN ................... 460 15.3.2 ERWEITERBARES HASHEN ....................................................... 463 15.3.3 UMSETZUNG DES ERWEITERBAREN HASHENS ......................... 465 16 GRAPHEN ...................................................................................... 471 16.1 ARTEN VON GRAPHEN ....................................................................... 471 16.1.1 UNGERICHTETE GRAPHEN ....................................................... 472 16.1.2 GERICHTETE GRAPHEN ........................................................... 473 16.1.3 GEWICHTETE GRAPHEN ......................................................... 474 16.1.4 WEITERE EIGENSCHAFTEN VON GRAPHEN ............................. 475 16.2 REALISIERUNG VON GRAPHEN ............................................................. 475 16.2.1 KNOTEN- UND KANTENLISTEN ................................................ 475 16.2.2 ADJAZENZMATRIX ................................................................. 476 16.2.3 GRAPHEN ALS DYNAMISCHE DATENSTRUKTUREN ........................477 16.2.4 TRANSFORMATIONEN ZWISCHEN DARSTELLUNGEN ........................477 16.2.5 VERGLEICH DER KOMPLEXITAET .............................................. 478 16.2.6 EINE JAVA-KLASSE FUER GRAPHEN .......................................... 479 16.3 AUSGEWAEHLTE GRAPHENALGORITHMEN .............................................. 481 16.3.1 BREITENDURCHLAUF ............................................................... 481 16.3.2 TIEFENDURCHLAUF ................................................................. 486 16.3.3 ZYKLENFREIHEIT UND TOPOLOGISCHES SORTIEREN ................... 490 16.4 ALGORITHMEN AUF GEWICHTETEN GRAPHEN ...................................... 493 16.4.1 KUERZESTE WEGE ................................................................... 493 16.4.2 DIJKSTRAS ALGORITHMUS ....................................................... 494 16.4.3 A*-ALGORITHMUS ................................................................. 498 16.4.4 KUERZESTE WEGE MIT NEGATIVEN KANTENGEWICHTEN .......... 504 16.4.5 MAXIMALER DURCHFLUSS ....................................................... 508 16.4.6 DER FORD-FULKERSON-ALGORITHMUS .................................... 510 16.5 ZENTRALITAETSANALYSE IN GRAPHEN .................................................. 513 16.6 WEITERE FRAGESTELLUNGEN FUER GRAPHEN ........................................ 518 17 ALGORITHMEN AUF TEXTEN ........................................................... 523 17.1 PROBLEME DER WORTERKENNUNG .................................................... 523 17.2 KNUTH-MORRIS-PRATT ....................................................................... 525 17.3 BOYER-MOORE .................................................................................. 529 17.4 PATTERN MATCHING .......................................................................... 535 17.4.1 REGULAERE AUSDRUECKE ........................................................... 536 17.4.2 ENDLICHE AUTOMATEN ......................................................... 537 17.4.3 JAVA-KLASSEN FUER REGULAERE AUSDRUECKE ............................. 543 17.5 AEHNLICHKEIT VON ZEICHENKETTEN .................................................... 544 17.5.1 LEVENSHTEIN-DISTANZ ...................................................... 544 17.5.2 N-GRAMME ......................................................................... 547 17.5.3 ANWENDUNGEN DER AEHNLICHKEITSVERGLEICHE ..................... 549 18 LITERATURHINWEISE ZUM TEIL III ................................................. 551 IV ANHANG 553 A QUELLTEXT DER KLASSE LOUTILS ................................................. 555 ABBILDUNGSVERZEICHNIS ......................................................................... 559 TABELLENVERZEICHNIS ............................................................................. 565 ALGORITHMENVERZEICHNIS ....................................................................... 567 BEISPIELVERZEICHNIS ............................................................................... 569 PROGRAMMVERZEICHNIS ......................................................................... 571 LITERATURVERZEICHNIS ............................................................................. 575 INDEX ...................................................................................................... 580 Inhaltsverzeichnis *!?՝ ΨΊ 1 Vorbemerkungen und Überblick.......................................... 3 1.1 1.2 Informatik, Algorithmen und Datenstrukturen........................ Historischer Überblick: Algorithmen........................................ 3 5 1.3 1.4 Historie von Programmiersprachen undJava........................... Grundkonzepte der Programmierung inJava........................... 6 9 2 2.1 Algorithmische Grundkonzepte............................................ Intuitiver Algorithmusbegriff.................................................... 2.1.1 Beispiele für Algorithmen.............................................. 2.1.2 Bausteine für Algorithmen............................................ 2.1.3 Pseudocode-Notation für Algorithmen ........................ 2.1.4 Struktogramme.............................................................. 2.1.5 Rekursion....................................................................... Sprachen und Grammatiken...................................................... 2.2.1 Begriffsbildung................................................................ 2.2.2 Reguläre Ausdrücke........................................................ 2.2.3 Backus-Naur-Form (BNF) ............................................ Elementare Datentypen ............................................................ 2.3.1 Datentypen als Algebren................................................ 2.3.2 Signaturen von Datentypen .......................................... 2.3.3 Der Datentyp bool........................................................ 2.3.4 Der Datentyp integer.................................................. 2.3.5 Felder und Zeichenketten.............................................. Terme.......................................................................................... 2.4.1 Bildung von Termen...................................................... 2.4.2 Algorithmus zur Termauswertung ................................ Datentypen in Java.................................................................... 17 17 17 21 23 28 29 32 33 34 35 36 37 37 39 40 41 43 43 45 46 2.5.1 Primitive Datentypen .................................................... 2.5.2 Referenzdatentypen........................................................ 2-5.3 Operatoren..................................................................... 46 48 53 2.2 2.3 2-4 2-5 Inhaltsverzeichnis 3 3.1 Algorithmenparadigmen......................................................... Überblick über Algorithmenparadigmen.................................. 3.2 Applikative Algorithmen........................................................... 58 3.2.1 Terme mit Unbestimmten.............................................. 58 3.2.2 Funktionsdefinitionen .................................................... 59 3.2.3 Auswertung von Funktionen.......................................... 60 3.2.4 Erweiterung der Funktionsdefinition ............................ 61 3.2.5 Applikative Algorithmen................................................ 62 3.2.6 Beispiele für applikative Algorithmen .......................... 63 Imperative Algorithmen............................................................ 71 3.3.1 Grundlagen imperativer Algorithmen............................ 71 3.3.2 Komplexe Anweisungen.................................................. 74 3.3.3 Beispiele für imperative Algorithmen............................ 77 Das logische Paradigma........................................................... 82 3.4.1 Logik der Fakten und Regeln........................................ 83 3.4.2 Deduktive Algorithmen.................................................. 84 Weitere Paradigmen................................................................. 89 3.5.1 Genetische Algorithmen ................................................ 90 3.5.2 Neuronale Netze............................................................ 93 Umsetzung in Java................................................................... 97 3.6.1 Ausdrücke und Anweisungen ........................................ 97 3.6.2 Methoden....................................................................... 106 3.6.3 Applikative Algorithmen und Rekursion ...................... 112 3.3 3.4 3.5 3.6 4 5 5.1 5.2 Literaturhinweise zum Teil I.............................................. 57 57 119 Ausgewählte Algorithmen........................................................ 123 Suchen in sortierten Folgen...................................................... 123 5.1.1 Sequenzielle Suche ....................................................... 124 5.1.2 Binäre Suche................................................................. 126 Sortieren ................................................................................... 130 5.2.1 Sortieren: Grundbegriffe................................................ 131 5.2.2 Sortieren durch Einfügen .............................................. 131 5.2.3 Sortieren durch Selektion.............................................. 134 5.2.4 Sortieren durch Vertauschen:BubbleSort...................... 135 5.2.5 Sortieren durch Mischen: MergeSort............................ 138 5.2.6 Quicksort....................................................................... 141 5.2.7 Sortieren durch Verteilen: RadixSort............................ 145 5.2.8 Sortierverfahren im Vergleich........................................ 149 Inhaltsverzeichnis 6 Formale Algorithmenmodelle.................................................155 6.1 Registermaschinen ........................................................................ 155 6.2 Abstrakte Maschinen .................................................................... 164 6.3 Markov-Algorithmen...................................................................... 168 6.4 6.5 Church’sche These........................................................................ 174 Interpreter für formale Algorithmenmodelle in Java ............... 176 6.5.1 Java: Markov-Interpreter................................................... 176 6.5.2 Registermaschine in Java................................................. 178 7 Eigenschaften von Algorithmen............................................ 185 7.1 Berechenbarkeit und Entscheidbarkeit ...................................... 185 7.1.1 Existenz nichtberechenbarer Funktionen....................... 186 7.1.2 Konkrete nichtberechenbare Funktionen....................... 188 7.1.3 Das Halteproblem............................................................. 190 7.1.4 Nichtentscheidbare Probleme.......................................... 192 7.1.5 7.2 Post’sches Korrespondenzproblem.................................. 193 Korrektheit von Algorithmen....................................................... 195 7.2.1 Relative Korrektheit ......................................................... 196 7.2.2 Korrektheit von imperativen Algorithmen..................... 196 7.2.3 Korrektheitsbeweise für Anweisungstypen..................... 199 7.2.4 Korrektheit imperativer Algorithmen an Beispielen .. . 202 7.2.5 7.3 Korrektheit applikativer Algorithmen.............................. 207 Komplexität.................................................................................... 208 7.3.1 Motivierendes Beispiel....................................................... 208 7.3.2 Asymptotische Analyse..................................................... 210 7.3.3 Komplexitätsklassen ......................................................... 214 7.3.4 Analyse von Algorithmen ................................................. 216 8 8.1 Entwurf von Algorithmen.......................................................219 Entwurfsprinzipien.......................................................................... 219 8.1.1 Schrittweise Verfeinerung................................................. 219 8.1.2 Einsatz von Algorithmenmustern.................................... 224 8.2 8.1.3 Problemreduzierung durch Rekursion ........................... 225 Algorithmenmuster·. Greedy......................................................... 226 8.2.1 Greedy-Algorithmen am Beispiel .................................... 226 8-3 8.2.2 Greedy: Optimales Kommunikationsnetz....................... 227 8.2.3 Verfeinerung der Suche nach billigster Kante............... 228 Rekursion: Divide-and-conquer.................................................... 231 8.4 8.3.1 Das Prinzip »Teile und herrsche«.................................. 231 8.3.2 Beispiel: Spielpläne für Turniere...................................... 232 Rekursion: Backtracking............................................................... 234 8.4.1 Prinzip des Backtracking ................................................. 235 8.4.2 Beispiel: Das Acht-Damen֊Problem................................ 237 8.4.3 8.5 Beispiel: Tic Tac Toe mit Backtracking....................... 240 Dynamische Programmierung...................................................... 242 8.5.1 Das Rucksackproblem....................................................... 243 8.5.2 Rekursive Lösung des Rucksackproblems..................... 245 8.5.3 Prinzip der dynamischen Programmierung................... 246 9 Parallele und verteilte Berechnungen..................................249 9.1 Grundlagen .................................................................................... 249 9.2 Modell der Petri-Netze................................................................. 252 9.2.1 Definition von Petri-Netzen............................................ 252 9.2.2 Formalisierung von Petri-Netzen.................................... 256 9.2.3 Das Beispiel der fünf Philosophen.................................. 258 9.3 Programmieren nebenläufiger Abläufe ...................................... 260 9.3.1 9.3.2 Koordinierte Prozesse....................................................... 261 Programmieren mit Semaphoren.................................... 262 9.3.3 Philosophenproblem mit Semaphoren............................ 264 9.3.4 Verklemmungsfreie Philosophen...................................... 265 9.4 Nebenläufige Berechnungen in Java.......................................... 268 9.4.1 Threads und wechselseitiger Ausschluss....................... 268 9.4.2 Parallelisierung in Java..................................................... 271 9.4.3 Das Philosophenproblem in Java.......................................274 10 III 11 Literaturhinweise zum Teil II.................................................281 Dátenstrukturen 283 Abstrakte Datentypen............................................................. 285 11.1 Signaturen und Algebren............................................................. 286 11.2 Algebraische Spezifikation........................................................... 288 11.2.1 Spezifikationen und Modelle............................................ 289 11.2.2 Termalgebra und Quotiententermalgebra..................... 290 11.2.3 Probleme mit initialer Semantik...................................... 293 11.3 Beispiele für abstrakte Datentypen............................................ 11.3.1 Der Kellerspeicher (Stack).............................................. 294 295 11.3.2 Beispiel für Kellernutzung................................................. 297 11.3.3 Die Warteschlange (Queue)............................................ 301 11.4 Entwurf von Datentypen ............................................................. 303 12 Klassen, Schnittstellen und Objekte in Java..................... 305 12.1 Grundzüge der Objektorientierung ............................................ 12.2 Klassen und Objekte in Java....................................................... 308 12.3 12.4 Vererbung....................................................................................... 313 Abstrakte Klassen und Schnittstellen........................................ 320 305 Inhaltsverzeichnis 12.5 12.6 12.7 Ausnahmen............................................................................... 323 Umsetzung abstrakter Datentypen.......................................... 326 Lambda-Ausdrücke................................................................... 329 13 13.1 Grundlegende Datenstrukturen............................................ 335 Stack und Queue als Datentypen............................................ 335 13.1.1 Implementierung des Stacks.......................................... 339 13.1.2 Implementierung der Queue.......................................... 340 13.1.3 Bewertung der Implementierungen .............................. 342 Verkettete Listen....................................................................... 343 Doppelt verkettete Listen......................................................... 350 Skip-Listen................................................................................. 355 Das Iterator-Konzept ............................................................... 358 Java Collection Framework ...................................................... 361 Generics in Java ....................................................................... 365 13.2 13.3 13.4 13.5 13.6 13.7 14 14.1 14.2 14.3 14.4 14.5 14.6 15 15.1 15.2 Bäume...................................................................................... 369 Bäume: Begriffe und Konzepte................................................ 369 Binärer Baum: Datentyp und Basisalgorithmen...................... 372 14.2.1 Der Datentyp »Binärer Baum«.................................... 372 14.2.2 Algorithmen zur Traversierung...................................... 377 Suchbäume............................................................................... 382 14.3.1 Suchen in Suchbäumen.................................................. 383 14.3.2 Einfügen und Löschen.................................................... 386 14.3.3 Komplexität der Operationen........................................ 391 Ausgeglichene Bäume............................................................... 392 14.4.1 Rot-Schwarz-Bäume...................................................... 393 14.4.2 AVL-Bäume......................... 402 14.4.3 B-Bäume ....................................................................... 410 Digitale Bäume......................................................................... 423 14.5.1 Tries............................................................................... 424 14.5.2 Patricia-Bäume............................................................. 429 Praktische Nutzung von Bäumen ............................................ 431 14.6.1 Sortieren mit Bäumen: HeapSort.................................. 431 14.6.2 Sets mit binären Suchbäumen...................................... 438 Hashverfahren............................................................................443 Grundprinzip des Hashens....................................................... 443 Grundlagen und Verfahren....................................................... 444 15.2.1 Hashfunktionen............................................................. 445 15.2.2 Behandlung von Kollisionen.......................................... 446 15.2.3 Aufwand beim Hashen .................................................. 450 15.2.4 Hashen in Java ............................................................. 452 15.2.5 Cuckoo-Hashing............................................................. 45 15.3 Dynamische Hashverfahren ............................................................. 459 15.3.1 Grundideen für dynamische Hashverfahren.................... 460 15.3.2 Erweiterbares Hashen........................................................ 463 15.3.3 Umsetzung des erweiterbaren Hashens........................... 465 16 Graphen.................................................................................... 471 16.1 Arten von Graphen......................................................................... 471 16.1.1 Ungerichtete Graphen........................................................ 472 16.1.2 Gerichtete Graphen............................................................ 473 16.1.3 Gewichtete Graphen .......................................................... 474 16.1.4 Weitere Eigenschaften von Graphen ............................... 475 16.2 Realisierung von Graphen............................................................. 475 16.2.1 Knoten- und Kantenlisten.................................................. 475 16.2.2 Adjazenzmatrix................................................................... 476 16.2.3 Graphen als dynamische Datenstrukturen....................... 477 16.2.4 Transformationen zwischen Darstellungen...................... 477 16.2.5 Vergleich der Komplexität ................................................ 478 16.2.6 Eine Java-Klasse für Graphen............................................ 479 16.3 Ausgewählte Graphenalgorithmen................................................ 481 16.3.1 Breitendurchlauf................................................................. 481 16.3.2 Tiefendurchlauf................................................................... 486 16.3.3 Zyklenfreiheit und topologisches Sortieren.................... 490 16.4 Algorithmen auf gewichteten Graphen.........................................493 16.4.1 Kürzeste Wege..................................................................... 493 16.4.2 Dijkstras Algorithmus........................................................ 494 16.4.3 A*-Algorithmus................................................................... 498 16.4.4 Kürzeste Wege mit negativenKantengewichten............ 504 16.4.5 Maximaler Durchfluss........................................................ 508 16.5 16.4.6 Der Ford-Fulkerson-Algorithmus ..................................... 510 Zentralitätsanalyse in Graphen .................................................... 513 16.6 Weitere Fragestellungen für Graphen......................................... 17 Algorithmen auf Texten...........................................................523 17.1 Probleme der Worterkennung ...................................................... 523 17.2 Knuth-Morris-Pratt......................................................................... 525 17.3 Boyer-Moore.................................................................................... 529 17.4 518 Pattern Matching........................................................................... 535 17.4.1 Reguläre Ausdrücke............................................................ 536 17.4.2 Endliche Automaten.......................................................... 537 17.5 17.4.3 Java-Klassen für reguläre Ausdrücke................................ 543 Ähnlichkeit von Zeichenketten...................................................... 544 17.5.1 Levenshtein-Distanz .......................................................... 544 I nhaltsverzeichnis 17.5.2 п-Gramme ................................................................. 547 17.5.3 Anwendungen der Ähnlichkeitsvergleiche..................... 549 18 Literaturhinweise zum TeilIII................................................ 551 A Quelltext der Klasse IOUtils.............................................. 555 Abbildungsverzeichnis..........................................................................559 Tabellenverzeichnis..............................................................................565 Algorithmenverzeichnis.................... ................................................ 567 Beispielverzeichnis................................................................................569 Programmverzeichnis .......................................................................... 571 Literaturverzeichnis..............................................................................575 Index 580
adam_txt INHALTSVERZEICHNIS I GRUNDLEGENDE KONZEPTE 1 1 VORBEMERKUNGEN UND UEBERBLICK . 3 1.1 INFORMATIK, ALGORITHMEN UND DATENSTRUKTUREN . 3 1.2 HISTORISCHER UEBERBLICK: ALGORITHMEN . 5 1.3 HISTORIE VON PROGRAMMIERSPRACHEN UND JAVA . 6 1.4 GRUNDKONZEPTE DER PROGRAMMIERUNG IN JAVA . 9 2 ALGORITHMISCHE GRUNDKONZEPTE . 17 2.1 INTUITIVER ALGORITHMUSBEGRIFF . 17 2.1.1 BEISPIELE FUER ALGORITHMEN . 17 2.1.2 BAUSTEINE FUER ALGORITHMEN . 21 2.1.3 PSEUDOCODE-NOTATION FUER ALGORITHMEN . 23 2.1.4 STRUKTOGRAMME . 28 2.1.5 REKURSION . 29 2.2 SPRACHEN UND GRAMMATIKEN . 32 2.2.1 BEGRIFFSBILDUNG . 33 2.2.2 REGULAERE AUSDRUECKE . 34 2.2.3 BACKUS-NAUR-FORM (BNF) . 35 2.3 ELEMENTARE DATENTYPEN . 36 2.3.1 DATENTYPEN ALS ALGEBREN . 37 2.3.2 SIGNATUREN VON DATENTYPEN . 37 2.3.3 DER DATENTYP BOOL . 39 2.3.4 DER DATENTYP INTEGER . 40 2.3.5 FELDER UND ZEICHENKETTEN . 41 2.4 TERME . 43 2.4.1 BILDUNG VON TERMEN . 43 2.4.2 ALGORITHMUS ZUR TERMAUSWERTUNG . 45 2.5 DATENTYPEN IN JAVA . 46 2.5.1 PRIMITIVE DATENTYPEN . 46 2.5.2 REFERENZDATENTYPEN . 48 2.5.3 OPERATOREN . 53 3 ALGORITHMENPARADIGMEN . 57 3.1 UEBERBLICK UEBER ALGORITHMENPARADIGMEN . 57 3.2 APPLIKATIVE ALGORITHMEN . 58 3.2.1 TERME MIT UNBESTIMMTEN . 58 3.2.2 FUNKTIONSDEFINITIONEN . 59 3.2.3 AUSWERTUNG VON FUNKTIONEN . 60 3.2.4 ERWEITERUNG DER FUNKTIONSDEFINITION . 61 3.2.5 APPLIKATIVE ALGORITHMEN . 62 3.2.6 BEISPIELE FUER APPLIKATIVE ALGORITHMEN . 63 3.3 IMPERATIVE ALGORITHMEN . 71 3.3.1 GRUNDLAGEN IMPERATIVER ALGORITHMEN . 71 3.3.2 KOMPLEXE ANWEISUNGEN . 74 3.3.3 BEISPIELE FUER IMPERATIVE ALGORITHMEN . 77 3.4 DAS LOGISCHE PARADIGMA . 82 3.4.1 LOGIK DER FAKTEN UND REGELN . 83 3.4.2 DEDUKTIVE ALGORITHMEN . 84 3.5 WEITERE PARADIGMEN . 89 3.5.1 GENETISCHE ALGORITHMEN . 90 3.5.2 NEURONALE NETZE . 93 3.6 UMSETZUNG IN JAVA . 97 3.6.1 AUSDRUECKE UND ANWEISUNGEN . 97 3.6.2 METHODEN . 106 3.6.3 APPLIKATIVE ALGORITHMEN UND REKURSION . 112 4 LITERATURHINWEISE ZUM TEIL I . 119 II ALGORITHMEN 121 5 AUSGEWAEHLTE ALGORITHMEN . 123 5.1 SUCHEN IN SORTIERTEN FOLGEN . 123 5.1.1 SEQUENZIELLE SUCHE . 124 5.1.2 BINAERE SUCHE . 126 5.2 SORTIEREN . 130 5.2.1 SORTIEREN: GRUNDBEGRIFFE . 131 5.2.2 SORTIEREN DURCH EINFUEGEN . 131 5.2.3 SORTIEREN DURCH SELEKTION . 134 5.2.4 SORTIEREN DURCH VERTAUSCHEN: BUBBLESORT . 135 5.2.5 SORTIEREN DURCH MISCHEN: MERGESORT . 138 5.2.6 QUICKSORT . 141 5.2.7 SORTIEREN DURCH VERTEILEN: RADIXSORT . 145 5.2.8 SORTIERVERFAHREN IM VERGLEICH . 149 6 FORMALE ALGORITHMENMODELLE . 155 6.1 REGISTERMASCHINEN . 155 6.2 ABSTRAKTE MASCHINEN . 164 6.3 MARKOV-ALGORITHMEN . 168 6.4 CHURCH * SCHE THESE . 174 6.5 INTERPRETER FUER FORMALE ALGORITHMENMODELLE IN JAVA . 176 6.5.1 JAVA: MARKOV-INTERPRETER . 176 6.5.2 REGISTERMASCHINE IN JAVA . 178 7 EIGENSCHAFTEN VON ALGORITHMEN .185 7.1 BERECHENBARKEIT UND ENTSCHEIDBARKEIT . 185 7.1.1 EXISTENZ NICHTBERECHENBARER FUNKTIONEN . 186 7.1.2 KONKRETE NICHTBERECHENBARE FUNKTIONEN . 188 7.1.3 DAS HALTEPROBLEM . 190 7.1.4 NICHTENTSCHEIDBARE PROBLEME . 192 7.1.5 POST * SCHES KORRESPONDENZPROBLEM . 193 7.2 KORREKTHEIT VON ALGORITHMEN . 195 7.2.1 RELATIVE KORREKTHEIT . 196 7.2.2 KORREKTHEIT VON IMPERATIVEN ALGORITHMEN . 196 7.2.3 KORREKTHEITSBEWEISE FUER ANWEISUNGSTYPEN . 199 7.2.4 KORREKTHEIT IMPERATIVER ALGORITHMEN AN BEISPIELEN . . . 202 7.2.5 KORREKTHEIT APPLIKATIVER ALGORITHMEN . 207 7.3 KOMPLEXITAET . 208 7.3.1 MOTIVIERENDES BEISPIEL . 208 7.3.2 ASYMPTOTISCHE ANALYSE . 210 7.3.3 KOMPLEXITAETSKLASSEN . 214 7.3.4 ANALYSE VON ALGORITHMEN . 216 8 ENTWURF VON ALGORITHMEN . 219 8.1 ENTWURFSPRINZIPIEN . 219 8.1.1 SCHRITTWEISE VERFEINERUNG . 219 8.1.2 EINSATZ VON ALGORITHMENMUSTERN . 224 8.1.3 PROBLEMREDUZIERUNG DURCH REKURSION . 225 8.2 ALGORITHMENMUSTER: GREEDY . 226 8.2.1 GREEDY-ALGORITHMEN AM BEISPIEL . 226 8.2.2 GREEDY: OPTIMALES KOMMUNIKATIONSNETZ . 227 8.2.3 VERFEINERUNG DER SUCHE NACH BILLIGSTER KANTE . 228 8.3 REKURSION: DIVIDE-AND-CONQUER . 231 8.3.1 DAS PRINZIP TEILE UND HERRSCHE . 231 8.3.2 BEISPIEL: SPIELPLAENE FUER TURNIERE . 232 8.4 REKURSION: BACKTRACKING . 234 8.4.1 PRINZIP DES BACKTRACKING . 235 8.4.2 BEISPIEL: DAS ACHT-DAMEN-PROBLEM . 237 8.4.3 BEISPIEL: TIC TAC TOE MIT BACKTRACKING . 240 8.5 DYNAMISCHE PROGRAMMIERUNG . 242 8.5.1 DAS RUCKSACKPROBLEM . 243 8.5.2 REKURSIVE LOESUNG DES RUCKSACKPROBLEMS . 245 8.5.3 PRINZIP DER DYNAMISCHEN PROGRAMMIERUNG . 246 9 PARALLELE UND VERTEILTE BERECHNUNGEN . 249 9.1 GRUNDLAGEN . 249 9.2 MODELL DER PETRI-NETZE . 252 9.2.1 DEFINITION VON PETRI-NETZEN . 252 9.2.2 FORMALISIERUNG VON PETRI-NETZEN . 256 9.2.3 DAS BEISPIEL DER FUENF PHILOSOPHEN . 258 9.3 PROGRAMMIEREN NEBENLAEUFIGER ABLAEUFE . 260 9.3.1 KOORDINIERTE PROZESSE . 261 9.3.2 PROGRAMMIEREN MIT SEMAPHOREN . 262 9.3.3 PHILOSOPHENPROBLEM MIT SEMAPHOREN . 264 9.3.4 VERKLEMMUNGSFREIE PHILOSOPHEN . 265 9.4 NEBENLAEUFIGE BERECHNUNGEN IN JAVA . 268 9.4.1 THREADS UND WECHSELSEITIGER AUSSCHLUSS . 268 9.4.2 PARALLELISIERUNG IN JAVA . 271 9.4.3 DAS PHILOSOPHENPROBLEM IN JAVA . 274 10 LITERATURHINWEISE ZUM TEIL II . 281 III DATENSTRUKTUREN 283 11 ABSTRAKTE DATENTYPEN . 285 11.1 SIGNATUREN UND ALGEBREN . 286 11.2 ALGEBRAISCHE SPEZIFIKATION . 288 11.2.1 SPEZIFIKATIONEN UND MODELLE . 289 11.2.2 TERMALGEBRA UND QUOTIENTENTERMALGEBRA . 290 11.2.3 PROBLEME MIT INITIALER SEMANTIK . 293 11.3 BEISPIELE FUER ABSTRAKTE DATENTYPEN . 294 11.3.1 DER KELLERSPEICHER (STACK) . 295 11.3.2 BEISPIEL FUER KELLERNUTZUNG . 297 11.3.3 DIE WARTESCHLANGE (QUEUE) . 301 11.4 ENTWURF VON DATENTYPEN . 303 12 KLASSEN, SCHNITTSTELLEN UND OBJEKTE IN JAVA . 305 12.1 GRUNDZUEGE DER OBJEKTORIENTIERUNG . 305 12.2 KLASSEN UND OBJEKTE IN JAVA . 308 12.3 VERERBUNG . 313 12.4 ABSTRAKTE KLASSEN UND SCHNITTSTELLEN . 320 12.5 AUSNAHMEN . 323 12.6 UMSETZUNG ABSTRAKTER DATENTYPEN . 326 12.7 LAMBDA-AUSDRUECKE . 329 13 GRUNDLEGENDE DATENSTRUKTUREN . 335 13.1 STACK UND QUEUE ALS DATENTYPEN . 335 13.1.1 IMPLEMENTIERUNG DES STACKS . 339 13.1.2 IMPLEMENTIERUNG DER QUEUE . 340 13.1.3 BEWERTUNG DER IMPLEMENTIERUNGEN . 342 13.2 VERKETTETE LISTEN . 343 13.3 DOPPELT VERKETTETE LISTEN . 350 13.4 SKIP-LISTEN . 355 13.5 DAS ITERATOR-KONZEPT . 358 13.6 JAVA COLLECTION FRAMEWORK . 361 13.7 GENERICS IN JAVA . 365 14 BAEUME . 369 14.1 BAEUME: BEGRIFFE UND KONZEPTE . 369 14.2 BINAERER BAUM: DATENTYP UND BASISALGORITHMEN . 372 14.2.1 DER DATENTYP BINAERER BAUM . 372 14.2.2 ALGORITHMEN ZUR TRAVERSIERUNG . 377 14.3 SUCHBAEUME . 382 14.3.1 SUCHEN IN SUCHBAEUMEN . 383 14.3.2 EINFUEGEN UND LOESCHEN . 386 14.3.3 KOMPLEXITAET DER OPERATIONEN . 391 14.4 AUSGEGLICHENE BAEUME . 392 14.4.1 ROT-SCHWARZ-BAEUME . 393 14.4.2 AVL-BAEUME . 402 14.4.3 B-BAEUME . 410 14.5 DIGITALE BAEUME . 423 14.5.1 TRIES . 424 14.5.2 PATRICIA-BAEUME . 429 14.6 PRAKTISCHE NUTZUNG VON BAEUMEN . 431 14.6.1 SORTIEREN MIT BAEUMEN: HEAPSORT . 431 14.6.2 SETS MIT BINAEREN SUCHBAEUMEN . 438 15 HASHVERFAHREN . 443 15.1 GRUNDPRINZIP DES HASHENS . 443 15.2 GRUNDLAGEN UND VERFAHREN . 444 15.2.1 HASHFUNKTIONEN . 445 15.2.2 BEHANDLUNG VON KOLLISIONEN . 446 15.2.3 AUFWAND BEIM HASHEN . 450 15.2.4 HASHEN IN JAVA . 452 15.2.5 CUCKOO-HASHING . 456 15.3 DYNAMISCHE HASHVERFAHREN . 459 15.3.1 GRUNDIDEEN FUER DYNAMISCHE HASHVERFAHREN . 460 15.3.2 ERWEITERBARES HASHEN . 463 15.3.3 UMSETZUNG DES ERWEITERBAREN HASHENS . 465 16 GRAPHEN . 471 16.1 ARTEN VON GRAPHEN . 471 16.1.1 UNGERICHTETE GRAPHEN . 472 16.1.2 GERICHTETE GRAPHEN . 473 16.1.3 GEWICHTETE GRAPHEN . 474 16.1.4 WEITERE EIGENSCHAFTEN VON GRAPHEN . 475 16.2 REALISIERUNG VON GRAPHEN . 475 16.2.1 KNOTEN- UND KANTENLISTEN . 475 16.2.2 ADJAZENZMATRIX . 476 16.2.3 GRAPHEN ALS DYNAMISCHE DATENSTRUKTUREN .477 16.2.4 TRANSFORMATIONEN ZWISCHEN DARSTELLUNGEN .477 16.2.5 VERGLEICH DER KOMPLEXITAET . 478 16.2.6 EINE JAVA-KLASSE FUER GRAPHEN . 479 16.3 AUSGEWAEHLTE GRAPHENALGORITHMEN . 481 16.3.1 BREITENDURCHLAUF . 481 16.3.2 TIEFENDURCHLAUF . 486 16.3.3 ZYKLENFREIHEIT UND TOPOLOGISCHES SORTIEREN . 490 16.4 ALGORITHMEN AUF GEWICHTETEN GRAPHEN . 493 16.4.1 KUERZESTE WEGE . 493 16.4.2 DIJKSTRAS ALGORITHMUS . 494 16.4.3 A*-ALGORITHMUS . 498 16.4.4 KUERZESTE WEGE MIT NEGATIVEN KANTENGEWICHTEN . 504 16.4.5 MAXIMALER DURCHFLUSS . 508 16.4.6 DER FORD-FULKERSON-ALGORITHMUS . 510 16.5 ZENTRALITAETSANALYSE IN GRAPHEN . 513 16.6 WEITERE FRAGESTELLUNGEN FUER GRAPHEN . 518 17 ALGORITHMEN AUF TEXTEN . 523 17.1 PROBLEME DER WORTERKENNUNG . 523 17.2 KNUTH-MORRIS-PRATT . 525 17.3 BOYER-MOORE . 529 17.4 PATTERN MATCHING . 535 17.4.1 REGULAERE AUSDRUECKE . 536 17.4.2 ENDLICHE AUTOMATEN . 537 17.4.3 JAVA-KLASSEN FUER REGULAERE AUSDRUECKE . 543 17.5 AEHNLICHKEIT VON ZEICHENKETTEN . 544 17.5.1 LEVENSHTEIN-DISTANZ . 544 17.5.2 N-GRAMME . 547 17.5.3 ANWENDUNGEN DER AEHNLICHKEITSVERGLEICHE . 549 18 LITERATURHINWEISE ZUM TEIL III . 551 IV ANHANG 553 A QUELLTEXT DER KLASSE LOUTILS . 555 ABBILDUNGSVERZEICHNIS . 559 TABELLENVERZEICHNIS . 565 ALGORITHMENVERZEICHNIS . 567 BEISPIELVERZEICHNIS . 569 PROGRAMMVERZEICHNIS . 571 LITERATURVERZEICHNIS . 575 INDEX . 580 Inhaltsverzeichnis *!?՝ ΨΊ 1 Vorbemerkungen und Überblick. 3 1.1 1.2 Informatik, Algorithmen und Datenstrukturen. Historischer Überblick: Algorithmen. 3 5 1.3 1.4 Historie von Programmiersprachen undJava. Grundkonzepte der Programmierung inJava. 6 9 2 2.1 Algorithmische Grundkonzepte. Intuitiver Algorithmusbegriff. 2.1.1 Beispiele für Algorithmen. 2.1.2 Bausteine für Algorithmen. 2.1.3 Pseudocode-Notation für Algorithmen . 2.1.4 Struktogramme. 2.1.5 Rekursion. Sprachen und Grammatiken. 2.2.1 Begriffsbildung. 2.2.2 Reguläre Ausdrücke. 2.2.3 Backus-Naur-Form (BNF) . Elementare Datentypen . 2.3.1 Datentypen als Algebren. 2.3.2 Signaturen von Datentypen . 2.3.3 Der Datentyp bool. 2.3.4 Der Datentyp integer. 2.3.5 Felder und Zeichenketten. Terme. 2.4.1 Bildung von Termen. 2.4.2 Algorithmus zur Termauswertung . Datentypen in Java. 17 17 17 21 23 28 29 32 33 34 35 36 37 37 39 40 41 43 43 45 46 2.5.1 Primitive Datentypen . 2.5.2 Referenzdatentypen. 2-5.3 Operatoren. 46 48 53 2.2 2.3 2-4 2-5 Inhaltsverzeichnis 3 3.1 Algorithmenparadigmen. Überblick über Algorithmenparadigmen. 3.2 Applikative Algorithmen. 58 3.2.1 Terme mit Unbestimmten. 58 3.2.2 Funktionsdefinitionen . 59 3.2.3 Auswertung von Funktionen. 60 3.2.4 Erweiterung der Funktionsdefinition . 61 3.2.5 Applikative Algorithmen. 62 3.2.6 Beispiele für applikative Algorithmen . 63 Imperative Algorithmen. 71 3.3.1 Grundlagen imperativer Algorithmen. 71 3.3.2 Komplexe Anweisungen. 74 3.3.3 Beispiele für imperative Algorithmen. 77 Das logische Paradigma. 82 3.4.1 Logik der Fakten und Regeln. 83 3.4.2 Deduktive Algorithmen. 84 Weitere Paradigmen. 89 3.5.1 Genetische Algorithmen . 90 3.5.2 Neuronale Netze. 93 Umsetzung in Java. 97 3.6.1 Ausdrücke und Anweisungen . 97 3.6.2 Methoden. 106 3.6.3 Applikative Algorithmen und Rekursion . 112 3.3 3.4 3.5 3.6 4 5 5.1 5.2 Literaturhinweise zum Teil I. 57 57 119 Ausgewählte Algorithmen. 123 Suchen in sortierten Folgen. 123 5.1.1 Sequenzielle Suche . 124 5.1.2 Binäre Suche. 126 Sortieren . 130 5.2.1 Sortieren: Grundbegriffe. 131 5.2.2 Sortieren durch Einfügen . 131 5.2.3 Sortieren durch Selektion. 134 5.2.4 Sortieren durch Vertauschen:BubbleSort. 135 5.2.5 Sortieren durch Mischen: MergeSort. 138 5.2.6 Quicksort. 141 5.2.7 Sortieren durch Verteilen: RadixSort. 145 5.2.8 Sortierverfahren im Vergleich. 149 Inhaltsverzeichnis 6 Formale Algorithmenmodelle.155 6.1 Registermaschinen . 155 6.2 Abstrakte Maschinen . 164 6.3 Markov-Algorithmen. 168 6.4 6.5 Church’sche These. 174 Interpreter für formale Algorithmenmodelle in Java . 176 6.5.1 Java: Markov-Interpreter. 176 6.5.2 Registermaschine in Java. 178 7 Eigenschaften von Algorithmen. 185 7.1 Berechenbarkeit und Entscheidbarkeit . 185 7.1.1 Existenz nichtberechenbarer Funktionen. 186 7.1.2 Konkrete nichtberechenbare Funktionen. 188 7.1.3 Das Halteproblem. 190 7.1.4 Nichtentscheidbare Probleme. 192 7.1.5 7.2 Post’sches Korrespondenzproblem. 193 Korrektheit von Algorithmen. 195 7.2.1 Relative Korrektheit . 196 7.2.2 Korrektheit von imperativen Algorithmen. 196 7.2.3 Korrektheitsbeweise für Anweisungstypen. 199 7.2.4 Korrektheit imperativer Algorithmen an Beispielen . . 202 7.2.5 7.3 Korrektheit applikativer Algorithmen. 207 Komplexität. 208 7.3.1 Motivierendes Beispiel. 208 7.3.2 Asymptotische Analyse. 210 7.3.3 Komplexitätsklassen . 214 7.3.4 Analyse von Algorithmen . 216 8 8.1 Entwurf von Algorithmen.219 Entwurfsprinzipien. 219 8.1.1 Schrittweise Verfeinerung. 219 8.1.2 Einsatz von Algorithmenmustern. 224 8.2 8.1.3 Problemreduzierung durch Rekursion . 225 Algorithmenmuster·. Greedy. 226 8.2.1 Greedy-Algorithmen am Beispiel . 226 8-3 8.2.2 Greedy: Optimales Kommunikationsnetz. 227 8.2.3 Verfeinerung der Suche nach billigster Kante. 228 Rekursion: Divide-and-conquer. 231 8.4 8.3.1 Das Prinzip »Teile und herrsche«. 231 8.3.2 Beispiel: Spielpläne für Turniere. 232 Rekursion: Backtracking. 234 8.4.1 Prinzip des Backtracking . 235 8.4.2 Beispiel: Das Acht-Damen֊Problem. 237 8.4.3 8.5 Beispiel: Tic Tac Toe mit Backtracking. 240 Dynamische Programmierung. 242 8.5.1 Das Rucksackproblem. 243 8.5.2 Rekursive Lösung des Rucksackproblems. 245 8.5.3 Prinzip der dynamischen Programmierung. 246 9 Parallele und verteilte Berechnungen.249 9.1 Grundlagen . 249 9.2 Modell der Petri-Netze. 252 9.2.1 Definition von Petri-Netzen. 252 9.2.2 Formalisierung von Petri-Netzen. 256 9.2.3 Das Beispiel der fünf Philosophen. 258 9.3 Programmieren nebenläufiger Abläufe . 260 9.3.1 9.3.2 Koordinierte Prozesse. 261 Programmieren mit Semaphoren. 262 9.3.3 Philosophenproblem mit Semaphoren. 264 9.3.4 Verklemmungsfreie Philosophen. 265 9.4 Nebenläufige Berechnungen in Java. 268 9.4.1 Threads und wechselseitiger Ausschluss. 268 9.4.2 Parallelisierung in Java. 271 9.4.3 Das Philosophenproblem in Java.274 10 III 11 Literaturhinweise zum Teil II.281 Dátenstrukturen 283 Abstrakte Datentypen. 285 11.1 Signaturen und Algebren. 286 11.2 Algebraische Spezifikation. 288 11.2.1 Spezifikationen und Modelle. 289 11.2.2 Termalgebra und Quotiententermalgebra. 290 11.2.3 Probleme mit initialer Semantik. 293 11.3 Beispiele für abstrakte Datentypen. 11.3.1 Der Kellerspeicher (Stack). 294 295 11.3.2 Beispiel für Kellernutzung. 297 11.3.3 Die Warteschlange (Queue). 301 11.4 Entwurf von Datentypen . 303 12 Klassen, Schnittstellen und Objekte in Java. 305 12.1 Grundzüge der Objektorientierung . 12.2 Klassen und Objekte in Java. 308 12.3 12.4 Vererbung. 313 Abstrakte Klassen und Schnittstellen. 320 305 Inhaltsverzeichnis 12.5 12.6 12.7 Ausnahmen. 323 Umsetzung abstrakter Datentypen. 326 Lambda-Ausdrücke. 329 13 13.1 Grundlegende Datenstrukturen. 335 Stack und Queue als Datentypen. 335 13.1.1 Implementierung des Stacks. 339 13.1.2 Implementierung der Queue. 340 13.1.3 Bewertung der Implementierungen . 342 Verkettete Listen. 343 Doppelt verkettete Listen. 350 Skip-Listen. 355 Das Iterator-Konzept . 358 Java Collection Framework . 361 Generics in Java . 365 13.2 13.3 13.4 13.5 13.6 13.7 14 14.1 14.2 14.3 14.4 14.5 14.6 15 15.1 15.2 Bäume. 369 Bäume: Begriffe und Konzepte. 369 Binärer Baum: Datentyp und Basisalgorithmen. 372 14.2.1 Der Datentyp »Binärer Baum«. 372 14.2.2 Algorithmen zur Traversierung. 377 Suchbäume. 382 14.3.1 Suchen in Suchbäumen. 383 14.3.2 Einfügen und Löschen. 386 14.3.3 Komplexität der Operationen. 391 Ausgeglichene Bäume. 392 14.4.1 Rot-Schwarz-Bäume. 393 14.4.2 AVL-Bäume. 402 14.4.3 B-Bäume . 410 Digitale Bäume. 423 14.5.1 Tries. 424 14.5.2 Patricia-Bäume. 429 Praktische Nutzung von Bäumen . 431 14.6.1 Sortieren mit Bäumen: HeapSort. 431 14.6.2 Sets mit binären Suchbäumen. 438 Hashverfahren.443 Grundprinzip des Hashens. 443 Grundlagen und Verfahren. 444 15.2.1 Hashfunktionen. 445 15.2.2 Behandlung von Kollisionen. 446 15.2.3 Aufwand beim Hashen . 450 15.2.4 Hashen in Java . 452 15.2.5 Cuckoo-Hashing. 45 15.3 Dynamische Hashverfahren . 459 15.3.1 Grundideen für dynamische Hashverfahren. 460 15.3.2 Erweiterbares Hashen. 463 15.3.3 Umsetzung des erweiterbaren Hashens. 465 16 Graphen. 471 16.1 Arten von Graphen. 471 16.1.1 Ungerichtete Graphen. 472 16.1.2 Gerichtete Graphen. 473 16.1.3 Gewichtete Graphen . 474 16.1.4 Weitere Eigenschaften von Graphen . 475 16.2 Realisierung von Graphen. 475 16.2.1 Knoten- und Kantenlisten. 475 16.2.2 Adjazenzmatrix. 476 16.2.3 Graphen als dynamische Datenstrukturen. 477 16.2.4 Transformationen zwischen Darstellungen. 477 16.2.5 Vergleich der Komplexität . 478 16.2.6 Eine Java-Klasse für Graphen. 479 16.3 Ausgewählte Graphenalgorithmen. 481 16.3.1 Breitendurchlauf. 481 16.3.2 Tiefendurchlauf. 486 16.3.3 Zyklenfreiheit und topologisches Sortieren. 490 16.4 Algorithmen auf gewichteten Graphen.493 16.4.1 Kürzeste Wege. 493 16.4.2 Dijkstras Algorithmus. 494 16.4.3 A*-Algorithmus. 498 16.4.4 Kürzeste Wege mit negativenKantengewichten. 504 16.4.5 Maximaler Durchfluss. 508 16.5 16.4.6 Der Ford-Fulkerson-Algorithmus . 510 Zentralitätsanalyse in Graphen . 513 16.6 Weitere Fragestellungen für Graphen. 17 Algorithmen auf Texten.523 17.1 Probleme der Worterkennung . 523 17.2 Knuth-Morris-Pratt. 525 17.3 Boyer-Moore. 529 17.4 518 Pattern Matching. 535 17.4.1 Reguläre Ausdrücke. 536 17.4.2 Endliche Automaten. 537 17.5 17.4.3 Java-Klassen für reguläre Ausdrücke. 543 Ähnlichkeit von Zeichenketten. 544 17.5.1 Levenshtein-Distanz . 544 I nhaltsverzeichnis 17.5.2 п-Gramme . 547 17.5.3 Anwendungen der Ähnlichkeitsvergleiche. 549 18 Literaturhinweise zum TeilIII. 551 A Quelltext der Klasse IOUtils. 555 Abbildungsverzeichnis.559 Tabellenverzeichnis.565 Algorithmenverzeichnis. . 567 Beispielverzeichnis.569 Programmverzeichnis . 571 Literaturverzeichnis.575 Index 580
any_adam_object 1
any_adam_object_boolean 1
author Saake, Gunter 1960-
Sattler, Kai-Uwe 1968-
author_GND (DE-588)122164458
(DE-588)120420392
author_facet Saake, Gunter 1960-
Sattler, Kai-Uwe 1968-
author_role aut
aut
author_sort Saake, Gunter 1960-
author_variant g s gs
k u s kus
building Verbundindex
bvnumber BV046908889
classification_rvk ST 250
ST 230
ST 130
ST 134
classification_tum DAT 362
DAT 530
DAT 455
ctrlnum (OCoLC)1152650288
(DE-599)DNB1208722581
discipline Informatik
discipline_str_mv Informatik
edition 6., überarbeitete und erweiterte Auflage
format Book
fullrecord <?xml version="1.0" encoding="UTF-8"?><collection xmlns="http://www.loc.gov/MARC21/slim"><record><leader>03427nam a22007938c 4500</leader><controlfield tag="001">BV046908889</controlfield><controlfield tag="003">DE-604</controlfield><controlfield tag="005">20210715 </controlfield><controlfield tag="007">t</controlfield><controlfield tag="008">200923s2021 gw a||| |||| 00||| ger d</controlfield><datafield tag="015" ind1=" " ind2=" "><subfield code="a">20,N18</subfield><subfield code="2">dnb</subfield></datafield><datafield tag="016" ind1="7" ind2=" "><subfield code="a">1208722581</subfield><subfield code="2">DE-101</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">9783864907692</subfield><subfield code="c">hbk</subfield><subfield code="9">978-3-86490-769-2</subfield></datafield><datafield tag="020" ind1=" " ind2=" "><subfield code="a">3864907691</subfield><subfield code="9">3-86490-769-1</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(OCoLC)1152650288</subfield></datafield><datafield tag="035" ind1=" " ind2=" "><subfield code="a">(DE-599)DNB1208722581</subfield></datafield><datafield tag="040" ind1=" " ind2=" "><subfield code="a">DE-604</subfield><subfield code="b">ger</subfield><subfield code="e">rda</subfield></datafield><datafield tag="041" ind1="0" ind2=" "><subfield code="a">ger</subfield></datafield><datafield tag="044" ind1=" " ind2=" "><subfield code="a">gw</subfield><subfield code="c">XA-DE-BW</subfield></datafield><datafield tag="049" ind1=" " ind2=" "><subfield code="a">DE-703</subfield><subfield code="a">DE-522</subfield><subfield code="a">DE-1102</subfield><subfield code="a">DE-860</subfield><subfield code="a">DE-1050</subfield><subfield code="a">DE-706</subfield><subfield code="a">DE-B768</subfield><subfield code="a">DE-91G</subfield><subfield code="a">DE-29T</subfield><subfield code="a">DE-573</subfield><subfield code="a">DE-Aug4</subfield><subfield code="a">DE-92</subfield><subfield code="a">DE-523</subfield><subfield code="a">DE-739</subfield><subfield code="a">DE-859</subfield><subfield code="a">DE-19</subfield><subfield code="a">DE-863</subfield><subfield code="a">DE-634</subfield><subfield code="a">DE-898</subfield><subfield code="a">DE-M347</subfield><subfield code="a">DE-83</subfield><subfield code="a">DE-355</subfield><subfield code="a">DE-1028</subfield><subfield code="a">DE-20</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 250</subfield><subfield code="0">(DE-625)143626:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 230</subfield><subfield code="0">(DE-625)143617:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 130</subfield><subfield code="0">(DE-625)143588:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">ST 134</subfield><subfield code="0">(DE-625)143590:</subfield><subfield code="2">rvk</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 362</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 530</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">DAT 455</subfield><subfield code="2">stub</subfield></datafield><datafield tag="084" ind1=" " ind2=" "><subfield code="a">004</subfield><subfield code="2">sdnb</subfield></datafield><datafield tag="100" ind1="1" ind2=" "><subfield code="a">Saake, Gunter</subfield><subfield code="d">1960-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)122164458</subfield><subfield code="4">aut</subfield></datafield><datafield tag="245" ind1="1" ind2="0"><subfield code="a">Algorithmen und Datenstrukturen</subfield><subfield code="b">eine Einführung mit Java</subfield><subfield code="c">Gunter Saake, Kai-Uwe Sattler</subfield></datafield><datafield tag="250" ind1=" " ind2=" "><subfield code="a">6., überarbeitete und erweiterte Auflage</subfield></datafield><datafield tag="264" ind1=" " ind2="1"><subfield code="a">Heidelberg</subfield><subfield code="b">dpunkt.verlag</subfield><subfield code="c">2021</subfield></datafield><datafield tag="300" ind1=" " ind2=" "><subfield code="a">xix, 588 Seiten</subfield><subfield code="b">Illustrationen, Diagramme</subfield></datafield><datafield tag="336" ind1=" " ind2=" "><subfield code="b">txt</subfield><subfield code="2">rdacontent</subfield></datafield><datafield tag="337" ind1=" " ind2=" "><subfield code="b">n</subfield><subfield code="2">rdamedia</subfield></datafield><datafield tag="338" ind1=" " ind2=" "><subfield code="b">nc</subfield><subfield code="2">rdacarrier</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Algorithmus</subfield><subfield code="0">(DE-588)4001183-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="650" ind1="0" ind2="7"><subfield code="a">Datenstruktur</subfield><subfield code="0">(DE-588)4011146-5</subfield><subfield code="2">gnd</subfield><subfield code="9">rswk-swf</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Informatik-Lehrbuch</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Praktische Informatik</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Java</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Datenstrukturen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Algorithmische Grundbegriffe</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Grundkonzepte Programmierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Datentypen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Algorithmenparadigmen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Grundlegende Datenstrukturen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Hashverfahren</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Graphen</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Algorithmenmuster</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Dynamische Programmierung</subfield></datafield><datafield tag="653" ind1=" " ind2=" "><subfield code="a">Datentypen in Java</subfield></datafield><datafield tag="655" ind1=" " ind2="7"><subfield code="0">(DE-588)4123623-3</subfield><subfield code="a">Lehrbuch</subfield><subfield code="2">gnd-content</subfield></datafield><datafield tag="689" ind1="0" ind2="0"><subfield code="a">Datenstruktur</subfield><subfield code="0">(DE-588)4011146-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="1"><subfield code="a">Algorithmus</subfield><subfield code="0">(DE-588)4001183-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2="2"><subfield code="a">Java</subfield><subfield code="g">Programmiersprache</subfield><subfield code="0">(DE-588)4401313-9</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="0" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="689" ind1="1" ind2="0"><subfield code="a">Algorithmus</subfield><subfield code="0">(DE-588)4001183-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2="1"><subfield code="a">Datenstruktur</subfield><subfield code="0">(DE-588)4011146-5</subfield><subfield code="D">s</subfield></datafield><datafield tag="689" ind1="1" ind2=" "><subfield code="5">DE-604</subfield></datafield><datafield tag="700" ind1="1" ind2=" "><subfield code="a">Sattler, Kai-Uwe</subfield><subfield code="d">1968-</subfield><subfield code="e">Verfasser</subfield><subfield code="0">(DE-588)120420392</subfield><subfield code="4">aut</subfield></datafield><datafield tag="710" ind1="2" ind2=" "><subfield code="a">Dpunkt.Verlag (Heidelberg)</subfield><subfield code="0">(DE-588)6085529-0</subfield><subfield code="4">pbl</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, PDF</subfield><subfield code="z">978-3-96910-066-0</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, EPUB</subfield><subfield code="z">978-3-96910-067-7</subfield></datafield><datafield tag="776" ind1="0" ind2="8"><subfield code="i">Erscheint auch als</subfield><subfield code="n">Online-Ausgabe, MOBI</subfield><subfield code="z">978-3-96910-068-4</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">DNB Datenaustausch</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&amp;doc_library=BVB01&amp;local_base=BVB01&amp;doc_number=032318396&amp;sequence=000001&amp;line_number=0001&amp;func_code=DB_RECORDS&amp;service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="856" ind1="4" ind2="2"><subfield code="m">Digitalisierung UB Passau - ADAM Catalogue Enrichment</subfield><subfield code="q">application/pdf</subfield><subfield code="u">http://bvbr.bib-bvb.de:8991/F?func=service&amp;doc_library=BVB01&amp;local_base=BVB01&amp;doc_number=032318396&amp;sequence=000005&amp;line_number=0002&amp;func_code=DB_RECORDS&amp;service_type=MEDIA</subfield><subfield code="3">Inhaltsverzeichnis</subfield></datafield><datafield tag="999" ind1=" " ind2=" "><subfield code="a">oai:aleph.bib-bvb.de:BVB01-032318396</subfield></datafield></record></collection>
genre (DE-588)4123623-3 Lehrbuch gnd-content
genre_facet Lehrbuch
id DE-604.BV046908889
illustrated Illustrated
index_date 2024-07-03T15:27:27Z
indexdate 2024-11-25T17:57:35Z
institution BVB
institution_GND (DE-588)6085529-0
isbn 9783864907692
3864907691
language German
oai_aleph_id oai:aleph.bib-bvb.de:BVB01-032318396
oclc_num 1152650288
open_access_boolean
owner DE-703
DE-522
DE-1102
DE-860
DE-1050
DE-706
DE-B768
DE-91G
DE-BY-TUM
DE-29T
DE-573
DE-Aug4
DE-92
DE-523
DE-739
DE-859
DE-19
DE-BY-UBM
DE-863
DE-BY-FWS
DE-634
DE-898
DE-BY-UBR
DE-M347
DE-83
DE-355
DE-BY-UBR
DE-1028
DE-20
owner_facet DE-703
DE-522
DE-1102
DE-860
DE-1050
DE-706
DE-B768
DE-91G
DE-BY-TUM
DE-29T
DE-573
DE-Aug4
DE-92
DE-523
DE-739
DE-859
DE-19
DE-BY-UBM
DE-863
DE-BY-FWS
DE-634
DE-898
DE-BY-UBR
DE-M347
DE-83
DE-355
DE-BY-UBR
DE-1028
DE-20
physical xix, 588 Seiten Illustrationen, Diagramme
publishDate 2021
publishDateSearch 2021
publishDateSort 2021
publisher dpunkt.verlag
record_format marc
spellingShingle Saake, Gunter 1960-
Sattler, Kai-Uwe 1968-
Algorithmen und Datenstrukturen eine Einführung mit Java
Algorithmus (DE-588)4001183-5 gnd
Java Programmiersprache (DE-588)4401313-9 gnd
Datenstruktur (DE-588)4011146-5 gnd
subject_GND (DE-588)4001183-5
(DE-588)4401313-9
(DE-588)4011146-5
(DE-588)4123623-3
title Algorithmen und Datenstrukturen eine Einführung mit Java
title_auth Algorithmen und Datenstrukturen eine Einführung mit Java
title_exact_search Algorithmen und Datenstrukturen eine Einführung mit Java
title_exact_search_txtP Algorithmen und Datenstrukturen eine Einführung mit Java
title_full Algorithmen und Datenstrukturen eine Einführung mit Java Gunter Saake, Kai-Uwe Sattler
title_fullStr Algorithmen und Datenstrukturen eine Einführung mit Java Gunter Saake, Kai-Uwe Sattler
title_full_unstemmed Algorithmen und Datenstrukturen eine Einführung mit Java Gunter Saake, Kai-Uwe Sattler
title_short Algorithmen und Datenstrukturen
title_sort algorithmen und datenstrukturen eine einfuhrung mit java
title_sub eine Einführung mit Java
topic Algorithmus (DE-588)4001183-5 gnd
Java Programmiersprache (DE-588)4401313-9 gnd
Datenstruktur (DE-588)4011146-5 gnd
topic_facet Algorithmus
Java Programmiersprache
Datenstruktur
Lehrbuch
url http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000001&line_number=0001&func_code=DB_RECORDS&service_type=MEDIA
http://bvbr.bib-bvb.de:8991/F?func=service&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000005&line_number=0002&func_code=DB_RECORDS&service_type=MEDIA
work_keys_str_mv AT saakegunter algorithmenunddatenstruktureneineeinfuhrungmitjava
AT sattlerkaiuwe algorithmenunddatenstruktureneineeinfuhrungmitjava
AT dpunktverlagheidelberg algorithmenunddatenstruktureneineeinfuhrungmitjava