Η υπολογιστική γεωμετρία είναι ένας κλάδος της επιστήμης υπολογιστών,
συγκεκριμένα του σχεδιασμού αλγορίθμων, που μελετάει προβλήματα
γεωμετρικής φύσης. Αυτή η περιοχή έχει προσελκύσει το ενδιαφέρον στο
πέρασμα των χρόνων λόγω των ποικίλων εφαρμογών της στη γραφική
υπολογιστών, τη ρομποτική και άλλους τομείς.
Η εφαρμογή που ενέπνευσε τη μελέτη αυτής της εργασίας αφορά την περιοχή
της σχεδίασης ηλεκτρονικών κυκλωμάτων. Προκειμένου να επιτευχθεί μια
ακριβής προσομοίωση ενός ολοκληρωμένου κυκλώματος, κάποιες παρασιτικές
συνιστώσες του πρέπει να μοντελοποιηθούν. Ένα σημαντικό βήμα της
διαδικασίας αυτής περιλαμβάνει τον υπολογισμό του μέγιστου άδειου κύβου με
δεδομένο κέντρο που μπορεί να τοποθετηθεί ανάμεσα στους αγωγούς. Αυτός ο
υπολογισμός πρέπει να επαναληφθεί πολλές φορές και, επομένως, ένας
αποδοτικός αλγόριθμος είναι απαραίτητος.
Αυτό το πρόβλημα είναι στενά συνδεδεμένο με θεμελιώδη προβλήματα της
υπολογιστικής γεωμετρίας, όπως η αναζήτηση του μέγιστου άδειου ορθογωνίου
ανάμεσα σε σημεία και το πρόβλημα του πλησιέστερου γείτονα, τα οποία
βρίσκουν εφαρμογή σε πολλούς τομείς, όπως η αναγνώριση προτύπων, η
εξόρυξη δεδομένων και η κατασκευή υλικών. Σε αυτήν την εργασία,
περιγράφουμε αυτά και άλλα σχετικά προβλήματα και σκιαγραφούμε κάποιες από
τις προτεινόμενες λύσεις τους.
Στη συνέχεια, παρουσιάζεται το κυρίως μέρος της εργασίας. Αρχικά,
επικεντρωνόμαστε στις γεωμετρίες Manhattan, όπου ο ζητούμενος κύβος και όλα
τα εμπόδια είναι ευθυγραμμισμένα με τους άξονες. Η δομή δεδομένων που
χρησιμοποιείται ονομάζεται octree. Ο αλγόριθμος στηρίζεται στην εισαγωγή των
εμποδίων στους κατάλληλους κόμβους του δέντρου, έτσι ώστε κάθε αναζήτηση
να εξετάζει μόνο τα γειτονικά εμπόδια του δοσμένου κέντρου. Όταν το
πλησιέστερο εμπόδιο εντοπιστεί, υπολογίζεται ο μέγιστος άδειος κύβος που
εφάπτεται σε αυτό. Έπειτα, ο αλγόριθμος γενικεύεται για non-Manhattan
γεωμετρίες. Τα εμπόδια μπορεί να είναι πολυγωνικά ή περιστραμμένα ορθογώνια
παραλληλεπίπεδα γύρω από τον άξονα z κατά γωνία φ, όπου φ ο
προσανατολισμός της ακμής κάποιου εμποδίου.
Τέλος, προτείνονται κάποιες τεχνικές βελτιστοποίησης και ακολουθεί μια
πειραματική μελέτη για την αξιολόγηση της επίδοσης του αλγορίθμου.
Συγκεκριμένα, υλοποιούμε τον αλγόριθμο σε C++ και χρησιμοποιούμε διάφορα
σετ εισόδου για να αξιολογήσουμε τη χρονική επίδοση και τη χρήση της μνήμης
κατά την κατασκευή του δέντρου και την πραγματοποίηση των αναζητήσεων.
Computational geometry is a branch of computer science, in particular algorithms
design, that studies problems of geometric nature. This area has gained enormous
attention over the years due to its various applications in computer graphics,
robotics, geographic information systems and other important fields.
The application that motivated the study of this thesis lies in the field of electronic
design automation. In order to achieve an accurate simulation of an integrated
circuit, some parasitic components of the circuit need to be modeled. An important
step of this procedure involves the calculation of the largest empty cube that can
be placed among the conductors considering a given center. This calculation must
be repeated numerous times and, therefore, an efficient algorithm is required.
This problem is closely related to fundamental problems of computational geometry,
such as the search of the largest empty rectangle among a set of points or the
nearest neighbor problem, both of which apply in many areas, like pattern recognition,
data mining and material manufacturing. In this thesis, we describe these
and other related problems and outline some of their proposed solutions.
After a general overview is provided to the reader, the main subject of this thesis
is introduced. The first part focuses on Manhattan geometries, where all obstacles
as well as the requested cube are axis aligned. The data structure that is used
for their representation is called octree. The algorithm focuses on inserting the
obstacles in the proper tree nodes, such that each search query examines only
the obstacles that are located in the neighborhood of the query point. When the
nearest obstacle to the query point is identified, the largest empty cube that abuts
this obstacle is calculated.
Afterwards, this algorithm is generalized for the case of non-Manhattan geometries.
Now, the obstacles can be polygonal or rotated rectangular cuboids and the
requested cube is no more axis aligned. It can be rotated by an angle φ around
the z axis, where φ is the direction of one of the obstacles’ edges.
Finally, some accelerating techniques are proposed and an experimental study is
conducted in order to evaluate the performance of the algorithm. More specifically,
the algorithm is implemented in C++ and various input sets are used to assess
the time performance and the memory usage of the program during the creation
of the octree and the execution of the queries.