Aufgaben
Inhaltsverzeichnis |
Übungsaufgaben
Binäre Suche
Aufgabe 1 Binäresuche
Etwas stimmt beim nachfolgenden Code nicht, es gibt einen Fehler, finden, bennenen und korrigieren sie ihn.
Nur keine Angst, die Übung sieht schlimer aus als sie tatsächlich ist.
Für Hilfe: (hilfe-bin-suche) eingeben
Für Tipps: (tipp-xy) wobei x ein Buchstabe ist und y eine Ziffer
Für die Buchstaben: a, b, c und l (für Lösung)
Die Tipps mit gleichen Buchstaben gehören zusammen
Für die Ziffern: 1, 2, 3, 4 die Ziffern stehen für die Tipp-intensitäts-stufe
(Oder sollten das zumindestens)
<eval> (define bin-suche</eval>
(lambda (ls wert) (bin-such ls wert)))
(define bin-such
(lambda (ls wert)
(cond
[(number? wert)
(cond
[(eq? ls '()) "Fehler! Eingegebene Liste ist leer"]
[(eq? wert '()) "Fehler! Eingegebener Wert ist leer"]
[(list? wert) "Fehler! Der zusuchende Wert soll eine Liste sein!?!"]
[(eq? (cdr ls) '())
(cond
[(eq? (car ls) wert) wert]
[else "Element Nicht vorhanden + Liste besteht aus max einem Wert."])]
[else (bint-suc (sort < ls) wert (listen-lang ls))])]
[Else "Ausschließlich Zahlen sind als Suchabfrage erlaubt."])))(define bint-suc
(lambda (ls wert i)
(cond
[(eq? i 2)(isers ls wert)]
[(< wert (car (liste-r ls)))
(bint-suc (liste-l ls) wert (listen-lang (liste-l ls)))
]
[(>= wert (car (liste-r ls)))
(bint-suc (liste-r ls) wert (listen-lang (liste-r ls)))
]
)))(define list-lalng1
(lambda (ls i)
(cond
[(not-list? ls)(+ i 1)]
[else (list-lalng (cdr ls) (+ i 1))])))(define list-lalng
(lambda (ls i)
(cond
[(eq? ls '()) i]
[else (list-lalng (cdr ls) (+ i 1))]))) (define listen-lang
(lambda (ls) (list-lalng ls 0)))
(define liste-l
(lambda (ls) (list-linkses ls (/ (listen-lang ls) 2))))
(define list-linkses
(lambda (ls laenge)
(cond
[(< laenge 1) '() ]
[else (cons (car ls) (list-linkses (cdr ls) (- laenge 1)))])))(define liste-ra
(lambda (ls) (list-rechtest ls (modulo (listen-lang ls) 2))))
(define liste-r
(lambda (ls) (list-rechtest ls (/ (listen-lang ls) 2))))
(define list-rechtest
(lambda (ls laenge)
(cond
[(< laenge 1) ls]
[else (list-rechtest (cdr ls) (- laenge 1))])))(define ist-er-es
(lambda (ls wert)
(cond
[(eq? ls '()) 'no]
[(eq? (car ls) wert) (car ls)]
[else (ist-er-es (cdr ls) wert)]
)))(define isers1
(lambda (ls wert)
(cond
[(eq? ls '()) 'no]
[(eq? (car ls) wert) (car ls)]
[(eq? (cadr ls) wert) (cadr ls)]
[else 'no]
)))(define isers
(lambda (ls wert)
(cond
[(eq? ls '()) "unter Umständen ist ein Fehler aufgetreten! Die End-Liste ist leer!!!"]
[(eq? (car ls) wert) "Wert Enthalten"]; für bint-suc i = 2
[(eq? (cadr ls) wert) "Wert Enthalten"]; für bint-suc i = 2
[(eq? (cddr ls) wert) "Wert Enthalten"]; für bint-suc i = 3
[else "Wert nicht Enthalten"]
)))(define sort
(lambda (rel ls)
(cond
[(eq? '() ls)'()]
[(eq? '() (cdr ls)) ls]
[(Cond
[(eq? rel <)(einf < (sort rel (cdr ls))(car ls) )]
[(eq? rel >)(einf > (sort rel (cdr ls))(car ls) )]
[else "Relation unzulässig!"])])))(define einf
(lambda (relatio ls wawert)
(cond
[(eq? ls '())(list wawert)]
[(relatio wawert (car ls))(cons wawert ls)]
[else (cons (car ls)(einf relatio (cdr ls) wawert))])))Es ist sehr zu empfehlen die Datei herunter zu laden und in Dr.Scheme zu verwenden.
Simabrzo_Fehler-Binaersuche.zipAufgabe 2
Schritt Vergleich zwischen Linearer Suche und Binärer Suche:
Untersuchen sie fünf verschiedene Eingaben sowohl für die Binäre Suche als auch für die Lineare Suche.
Und untersuchen sie die Unterschiede zwischen den Reaktionen der beiden Funktionen.
In der Formatierung von:
(bin-suche <listen-l> <zu-suchender-wert>)<br>
(lin-suche <listen-l> <zu-suchender-wert>)<br><br></zu-suchender-wert></listen-l></zu-suchender-wert></listen-l>
Eingabe Beispiele:
bsp 1
(bin-suche 10000 7866)
(lin-suche 10000 7866)
bsp 2
(bin-suche 10000 786)
(lin-suche 100000 7866)
bsp 3
(bin-suche 100000 7866)
(lin-suche 10000 786)
Was stellen sie fest?
(Die Listen-Länge wird benötigt da automatisch eine Exemplarische Liste mit angegebener Länge erstellt wird mit der Eigenschaft das ihre Elemente die Zahlen von 0 bis zur angegebenen Zahl sind.)
Laden sie sich herfür nachfolgende Datei herunter und nutzen sie diese in Dr Scheme.
Simabrzo_Binaeresuche-versus-linearesuche.zipMultiplikation großer ganzer Zahlen nach KARATSUBA und OFMAN
Lösen Sie, unter Verwendung der Kenntnisse aus Teile und Herrsche 2: Der Algorithmus von KARATSUBA und OFMAN, folgende Rechenaufgaben:
- 3812 \cdot 3264
- 837147 \cdot 479253
- 34 \cdot 56
Wie sinnvoll ist der Einsatz des Algorithmus bei kleinen Zahlen?
Schnelle Matrixmultiplikation nach STRASSEN
Gegeben sind folgende zwei Matrizen A und B
A=\begin{pmatrix} 3 & 4 & 8 & 9\\ 1 & 5 & 9 & 2\\ 5 & 7 & 4 & 3\\ 2 & 3 & 8 & 1 \end{pmatrix} und
B=\begin{pmatrix} 3 & 2 & 8 & 6\\ 1 & 4 & 9 & 5\\ 7 & 6 & 4 & 3\\ 2 & 9 & 2 & 3 \end{pmatrix}Berechnen Sie das Produkt der gegebenen Matrizen mithilfe des Algorithmus von Strassen.
Lösungen
Die Lösungen zu den Aufgaben findet man hier.