2
ΔΙΟΡΘΩΣΕΙΣ ΑΛΓΟΡΙΘΜΩΝ ΑΝΑΖΗΤΗΣΗΣ ΒΙΒΛΙΟΥ ΤΝΕΣ Αλγόριθμος για αναζήτηση σε βάθος (σελ. 43) 1. ΑΝΟΙΚΤΕΣ := [S 0 ], ΚΛΕΙΣΤΕΣ := [ ] 2. Εάν ΑΝΟΙΚΤΕΣ = [ ], τότε τερμάτισε. Δεν υπάρχει λύση. 3. Αφαίρεσε την πρώτη κατάσταση, S i , από τις ΑΝΟΙΚΤΕΣ και πρόσθεσέ την στις ΚΛΕΙΣΤΕΣ. Εάν η S i είναι η S g , τότε τερμάτισε και επίστρεψε τη διαδρομή από την S g στην S 0 . 4. Δημιούργησε τις διαδόχους της S i , που δεν ανήκουν ήδη στις ΑΝΟΙΚΤΕΣ ή ΚΛΕΙΣΤΕΣ, με βάση τις ενέργειες που μπορούν να εφαρμοσθούν στην S i . Η κάθε διάδοχος έχει ένα δείκτη προς την S i , ως την προκάτοχό της. 5. Εάν η S g ανήκει στις διαδόχους της S i , τότε τερμάτισε και επίστρεψε τη διαδρομή από την S g στην S 0 . Διαφορετικά Πρόσθεσε τις διαδόχους στην αρχή της λίστας ΑΝΟΙΚΤΕΣ και επανάλαβε από την οδηγία 2. Ευρετική Αναζήτηση: Αλγόριθμος A * (σελ. 48-49) 1. ΑΝΟΙΚΤΕΣ := [S 0 ], ΚΛΕΙΣΤΕΣ := [ ] 2. Εάν ΑΝΟΙΚΤΕΣ = [ ], τότε τερμάτισε. Δεν υπάρχει λύση. 3. Αφαίρεσε την κατάσταση S i από τη λίστα ΑΝΟΙΚΤΕΣ, για την οποία f(S i ) ≤ f(S j ) για όλες τις άλλες ανοικτές καταστάσεις S j και πρόσθεσέ την στις ΚΛΕΙΣΤΕΣ. Εάν η S i είναι η S g , τότε τερμάτισε και επίστρεψε τη διαδρομή από την S g στην S 0 . 4. Δημιούργησε τις διαδόχους της S i και δώσε στην κάθε διάδοχο ένα δείκτη προς την S i , ως την προκάτοχό της. 5. Εάν η S g ανήκει στις διαδόχους της S i , τότε τερμάτισε και επίστρεψε τη διαδρομή από την S g στην S 0 . 6. Διαφορετικά Επανάλαβε τα ακόλουθα για κάθε διάδοχο, S j , της S i :

Διόρθωση αλγορίθμων ΤΝΕΣ

  • Upload
    artzi

  • View
    7

  • Download
    4

Embed Size (px)

DESCRIPTION

PL31

Citation preview

Page 1: Διόρθωση αλγορίθμων ΤΝΕΣ

ΔΙΟΡΘΩΣΕΙΣ ΑΛΓΟΡΙΘΜΩΝ ΑΝΑΖΗΤΗΣΗΣ ΒΙΒΛΙΟΥ ΤΝΕΣ

Αλγόριθμος για αναζήτηση σε βάθος (σελ. 43)

1. ΑΝΟΙΚΤΕΣ := [S0], ΚΛΕΙΣΤΕΣ := [ ]2. Εάν ΑΝΟΙΚΤΕΣ = [ ], τότε τερμάτισε. Δεν υπάρχει λύση.3. Αφαίρεσε την πρώτη κατάσταση, Si, από τις ΑΝΟΙΚΤΕΣ και πρόσθεσέ την

στις ΚΛΕΙΣΤΕΣ. Εάν η Si είναι η Sg, τότε τερμάτισε και επίστρεψε τη διαδρομή από την Sg στην S0.

4. Δημιούργησε τις διαδόχους της Si, που δεν ανήκουν ήδη στις ΑΝΟΙΚΤΕΣ ή ΚΛΕΙΣΤΕΣ, με βάση τις ενέργειες που μπορούν να εφαρμοσθούν στην Si. Η κάθε διάδοχος έχει ένα δείκτη προς την Si, ως την προκάτοχό της.

5. Εάν η Sg ανήκει στις διαδόχους της Si, τότε τερμάτισε και επίστρεψε τη διαδρομή από την Sg στην S0. Διαφορετικά Πρόσθεσε τις διαδόχους στην αρχή της λίστας ΑΝΟΙΚΤΕΣ και επανάλαβε από την οδηγία 2.

Ευρετική Αναζήτηση: Αλγόριθμος A * (σελ. 48-49)

1. ΑΝΟΙΚΤΕΣ := [S0], ΚΛΕΙΣΤΕΣ := [ ]2. Εάν ΑΝΟΙΚΤΕΣ = [ ], τότε τερμάτισε. Δεν υπάρχει λύση.3. Αφαίρεσε την κατάσταση Si από τη λίστα ΑΝΟΙΚΤΕΣ, για την οποία f(Si) ≤

f(Sj) για όλες τις άλλες ανοικτές καταστάσεις Sj και πρόσθεσέ την στις ΚΛΕΙΣΤΕΣ. Εάν η Si είναι η Sg, τότε τερμάτισε και επίστρεψε τη διαδρομή από την Sg στην S0.

4. Δημιούργησε τις διαδόχους της Si και δώσε στην κάθε διάδοχο ένα δείκτη προς την Si, ως την προκάτοχό της.

5. Εάν η Sg ανήκει στις διαδόχους της Si, τότε τερμάτισε και επίστρεψε τη διαδρομή από την Sg στην S0.

6. Διαφορετικά Επανάλαβε τα ακόλουθα για κάθε διάδοχο, Sj, της Si: Υπολόγισε την τιμή f(Sj). Εάν η Sj δεν ανήκει ούτε στις ΑΝΟΙΚΤΕΣ, ούτε στις ΚΛΕΙΣΤΕΣ

καταστάσεις, τότε πρόσθεσε την Sj στις ΑΝΟΙΚΤΕΣ με τιμή αξιολόγησης f(Sj).

Εάν η Sj ήδη ανήκει στις ΑΝΟΙΚΤΕΣ ή ΚΛΕΙΣΤΕΣ, τότε σύγκρινε τη νέα τιμή αξιολόγησής της, έστω νέα, με την παλαιότερή της, έστω παλαιά. Εάν παλαιά ≤ νέα, τότε απόβαλε το νέο κόμβο με την κατάσταση Sj. Διαφορετικά, αφαίρεσε το στοιχείο (Sj,παλαιά) από τη λίστα στην οποία ανήκει (ΑΝΟΙΚΤΕΣ ή ΚΛΕΙΣΤΕΣ) και πρόσθεσε το στοιχείο (Sj,νέα) στις ΑΝΟΙΚΤΕΣ.

7. Επανάλαβε από την εντολή 2.