28.03.2014 Aufrufe

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

(vereinigung (cdr m1) m2)))))<br />

Wichtiger Aspekt: Effizienz? n: Mäachtigkeit der Menge(n).<br />

• element? O(n)<br />

• hinzufuegen O(n 2 )<br />

• schnitt O(n 2 ) wegen element? und Rekursion über m1<br />

Damit auf jeden Fall zu langsam für große Mengen. Verbesserung: Ordne die<br />

Elemente in aufsteigender Reihenfolge, Voraussetzung: es existiert eine totale<br />

Ordnung auf Elementen; d.h. hier werden nur Zahlen betrachtet. Notwendig:<br />

Veränderung der hinzufügen-Funktion<br />

(define (hinzufügen x m)<br />

(cond ((null? m) (cons x m))<br />

((= x (car m)) m)<br />

((< x (car m)) (cons x m))<br />

(else (cons (car m) (hinzufügen x (cdr m))))))<br />

Komplexität: Im Durchschnitt n Vergleiche, aber Größenordnung O(n). Verbesserung<br />

<strong>von</strong> schnitt: Gleichzeitiges Durchlaufen beider Liste: Vergleiche<br />

2<br />

Anfangselemente. Sind beide gleich, so kommt das Element in den Schnitt;<br />

ansonsten kommt das kleinere Element nicht in den Schnitt.<br />

(define (schnitt m1 m2)<br />

(if (or (null? m1) (null? m2)) leer<br />

(let ((x1 (car m1)) (x2 (car m2)))<br />

(cond ((= x1 x2) (cons x1<br />

(schnitt (cdr m1)<br />

(cdr m2))))<br />

((< x1 x2) (schnitt (cdr m1) m2))<br />

((> x1 x2) (schnitt (cdr m2) m1))))))<br />

Komplexität: in jedem Schritt Wegnahme eines Elementes, daher |m 1 | + |m 2 |<br />

Schritte, also O(n) statt O(n 2 ). Analog dazu ist die Vereinigung. Trotzdem ist<br />

diese Implementierung noch relativ aufwendig: elemenet? und hinzufügen.<br />

Bessere Idee: Mengen als geordnete binäre Bäume darstellen. D.h. es gibt<br />

immer zwei Teilbäume, die so geordnet sein sollen, daß der linke Teilbaum<br />

nur kleinere als der Knoten und der rechte Teilbaum nur größere Elemente<br />

als der Knoten enthält, die Darstellung ist jedoch nicht eindeutig. Der Vorteil<br />

dieser Darstellung: die element?-Funktion wird schneller:<br />

28

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!