ΥΠΟΛΟΓΙΣΤΙΚΗ ΝΟΗΜΟΣΥΝΗ ΙΙ
Υλοποιήθηκαν οι ακόλουθες μέθοδοι μετάλλαξης:
Swap Node Mutator
Ο τελεστής αυτός επιλέγει τυχαία δύο κόμβους στο άτομο-δέντρο και τους ανταλλάσσει (εάν αυτό επιτρέπεται). Τα υπό-δέντρα των κόμβων αυτών παραμένουν ανέπαφα, όπως ήταν πριν την εφαρμογή του τελεστή.
Ας υποθέσουμε ότι το δέντρο του Σχήματος 7.1 έχει επιλεγεί για την εφαρμογή του Swap Node Mutator. Το μέγεθος του δέντρου αυτού είναι 7. Ας υποθέσουμε ότι επιλέχθηκαν οι αριθμοί 3 και 5 (δείκτες κόμβων με depth-first προσπέλαση). Στο Σχήμα 7.4 φαίνεται το δέντρο του Σχήματος 7.1 με αριθμημένους κόμβους και τους δυο επιλεγμένους κόμβους και στο Σχήμα 7.5 φαίνεται το νέο δέντρο που θα προκύψει από την εκτέλεση του τελεστή αυτού.
Εάν είχαν επιλεχθεί οι αριθμοί, για παράδειγμα, 2 και 4 τότε δεν θα γινόταν τίποτα, αφού ο τελεστής AND παίρνει δυο τελεστές, ενώ ο NOT έναν.
Swap SubTree Mutator
Ο τελεστής αυτός είναι όμοιος με τον Swap Node Mutator, με τη διαφορά ότι μαζί με τους κόμβους ανταλλάσσονται και τα υπό-δέντρα τους. Κατά τα άλλα, έχει ακριβώς τα ίδια χαρακτηριστικά με τον προηγούμενο τελεστή, εκτός από τον τελευταίο περιορισμό.
Σχήμα 7.3: Τα Δέντρα-Παιδιά που προέκυψαν από τη διασταύρωση
Δηλαδή, δεν εκτελεί έλεγχο για το αν είναι νόμιμη η ανταλλαγή δύο υπό-δέντρων. Δύο υπό-δέντρα μπορούν πάντοτε να ανταλλαχθούν μέσα στο δέντρο έκφρασης, χωρίς να καταστραφεί η δομή του. Αυτή η παρατήρηση χρησιμοποιήθηκε και στη σχεδίαση του τελεστή διασταύρωσης.
Σχήμα 7.4:
Το δέντρο του Σχήματος 7.1 με αριθμημένους κόμβους σύμφωνα
με την depth-first
προσπέλαση
Flip Mutator
Ο τελεστής αυτός επιλέγει τυχαία έναν κόμβο και, αν δεν είναι τελεστής (οπότε είναι σχεσιακή έκφραση), τότε τοποθετεί στη θέση του μια οποιαδήποτε άλλη έκφραση (μη-πρόβλεψη).