Algorithmen und Datenstrukturen eine Einführung mit Java
Gespeichert in:
Hauptverfasser: | , |
---|---|
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&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000001&line_number=0001&func_code=DB_RECORDS&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&doc_library=BVB01&local_base=BVB01&doc_number=032318396&sequence=000005&line_number=0002&func_code=DB_RECORDS&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 |