background image

59 | 

9 4

 

 

3.7.3  Καλωδίωση 

 

3.7.3.1 

Εύρεση σημείου έναρξης 

 

Για  κάθε  διασύνδεση,  γίνεται  έλεγχος  αν  από  το  output  pin  υπάρχουν  άλλες 

καλωδιώσεις. Αν υπάρχουν τότε υπολογίζεται η ευκλείδεια απόσταση από όλα τα σημεία των 

καλωδιώσεων  και  σαν  σημείο  έναρξης  ορίζεται  αυτό  με  την  μικρότερη  απόσταση  από  το 

σημείο που βρίσκεται το input pin. 

Foreach wire 

If it_is_connected_to_source 

Get_all_points 

Ψευδοκώδικας 6: Εύρεση ήδη υπάρχουσας καλωδίωσης και εισαγωγή όλων των σημείων σε λίστα.

 

SortPointsByGoalDist(ArrayList<Point> po, Point goal) 

Ψευδοκώδικας 7: Ταξινόμηση όλων των σημείων με βάση την μικρότερη απόσταση από τον στόχο. 

Αν  η  καλωδίωση  αποτύχει  ή  δεν  βρεθεί  η  υπάρχουσα  χρησιμοποιούμε  το  επόμενο 

σημείο έναρξης με την μικρότερη απόσταση. 

 

3.7.3.2 

Καλωδίωση από σημείο σε σημείο 

 

Αφού  τοποθετηθούν  τα  στοιχεία  στον  καμβά  και  αποφασίσουμε  για  τα  σημεία 

έναρξης  και  σημείο  στόχου  τότε  δημιουργούμε  την  καλωδίωση.  Η  καλωδίωση  γίνεται 

σύμφωνα με τον αλγόριθμο A*. Ο αλγόριθμος Α* είναι δύο σταδίων. Το πρώτο στάδιο είναι 

αυτό της εύρεσης συντομότερης διαδρομής μεταξύ δύο σημείων που αναφερθήκαμε και στο  

Κεφ. 2.7. Το δεύτερο στάδιο είναι με τις λιγότερες δυνατές αλλαγές κατεύθυνσης. Το δεύτερο 

στάδιο  επειδή  προσθέτει  χρονική  και  χωρική  πολυπλοκότητα  εφαρμόζεται  μόνο  στα 

κυκλώματα με την καλύτερη τιμή της συνάρτησης  αξιολόγησης για λόγους αισθητικής έτσι 

ώστε, να είναι ευδιάκριτα τα κυκλώματα εξόδου.