BuK/IIm11/Studenten/sirorose/uebung2

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Scheme</language>
= Übung 2 =

=== Prinzipell Unlösbares ===

# Unzugängliches (wenigstens) für Computer
# Praktisch Unmögliches

==== Aufgabe 1  ====

===== Unzugängliches (wenigstens) für Computer =====
* Durch fehlende Beschreibungssprache nicht maschinell verarbeitbar / formalisierbar.
* Viele Probleme vielschichtig und mit vielen (abhängigen) Parametern.
* Simulationen und KI ermöglichen ein Erschließen dieses Problembereichs und tragen somit zur Verkleinerung dieser Problemklasse bei.
* Beispiele: "Mag sie mich?", "Wer gewinnt am Samstag das Fussballspiel?"

===== Praktisch Unmögliches =====
* Probleme, die maschinell beschreibar jedoch nicht effizient lösbar sind (Grenzen vorhandener Ressourcen).
* Beispiele: Leistungsfähiges Schachprogramm, n-Queens-Problem und Rundreiseproblem in größeren Dimensionen und im letzteren Fall mit mehreren Parametern.


==== Aufgabe 5 ====

<code id="4f71e429cb6ad">
(define f 
  (lambda (n) 
    (cond
      ((= n 1) 1)
      ((even? n) (+ (f (/ n 2)) 1)) 
      ((odd? n) (/ 1 (f (- n 1))))
      )
    )
 )   


(define f_umkehr 
  (lambda (y) 
    (cond
      ((= y 1) 1)
      ((> y 1) (* 2 (f_umkehr (- y 1)))) 
      (else (+ (f_umkehr (/ 1 y)) 1))
       
    )
   )
)
(define memvalues (make-hashtable))
(define f_mem
  (lambda (x)
   (cond
    ((hashtable/contains? memvalues x) (hashtable/get memvalues x))
    ((= x 1) (hashtable/put! memvalues x 1))
    ((even? x) (hashtable/put! memvalues x (+ (f_mem (/ x 2)) 1)))
    ((odd? x) (hashtable/put! memvalues x (/ 1 (f_mem (- x 1))))))
    (hashtable/get memvalues x)
   )
)
</code>
<run id="4f71e429cb76a">
(f_mem 5)
</run>