Δομή δεδομένων γραφήματος και Algorithms (Παράδειγμα)

⚡ Έξυπνη Σύνοψη

Η Δομή Δεδομένων Γραφήματος είναι μια μη γραμμική συλλογή κορυφών και ακμών όπου κάθε ακμή συνδέει ένα ζεύγος κορυφών. Τα γραφήματα μοντελοποιούν δίκτυα πραγματικού κόσμου, όπως χάρτες, κοινωνικές συνδέσεις και ιστοσελίδες, και υποστηρίζουν πολλούς ισχυρούς αλγόριθμους.

  • 📐 Δομή: Ένα γράφημα G = (V, E) συνδέει ένα σύνολο κορυφών (κόμβων) με ένα σύνολο ακμών (συνδέσμων) μεταξύ τους.
  • 🔤 Ορολογία: Οι βασικοί όροι περιλαμβάνουν την κορυφή, την ακμή, τον βαθμό, τον εσωτερικό βαθμό, τον εξωτερικό βαθμό, τον αυτο-βρόχο και τη γειτνίαση.
  • 🗂️ Αναπαράσταση: Τα γραφήματα αποθηκεύονται χρησιμοποιώντας έναν πίνακα γειτνίασης ή μια λίστα γειτνίασης, το καθένα με διαφορετικούς συμβιβασμούς χώρου.
  • 🧭 τύποι: Κατευθυνόμενα, μη κατευθυνόμενα, σταθμισμένα, κυκλικά, ακυκλικά, πλήρη, διμερή και άλλα, ταξινομούν γραφήματα με βάση τη δομή.
  • 🌐 εφαρμογές: Google Η δρομολόγηση χαρτών, τα κοινωνικά δίκτυα, η κατάταξη στον ιστό και η εξάρτηση από πόρους βασίζονται όλα σε γραφήματα.

Δομή δεδομένων γραφήματος και Algorithms

Τι είναι ένα γράφημα στη δομή δεδομένων;

Ένα γράφημα είναι μια μη γραμμική δομή δεδομένων που αποτελείται από κορυφές και ακμές, όπου οι κορυφές περιέχουν τις πληροφορίες ή τα δεδομένα και οι ακμές λειτουργούν ως σύνδεσμος μεταξύ ενός ζεύγους κορυφών.

Χρησιμοποιείται για την επίλυση πραγματικών προβλημάτων, όπως η εύρεση της καλύτερης διαδρομής προς την τοποθεσία προορισμού και η διαδρομή για τηλεπικοινωνίες και κοινωνικά δίκτυα. Οι χρήστες θεωρούνται κόμβοι στο Γράφημα και τα καλώδια είναι οι ακμές που συνδέουν τους χρήστες.

Εάν οι ακμές αντιπροσωπεύονται ως Ε και οι κορυφές ως V, τότε το γράφημα G μπορεί να γραφτεί ως το σύνολο των κορυφών και των ακμών, όπως π.χ. Σολ (V, E).

Παράδειγμα Γραφήματος στη Δομή Δεδομένων

Ακολουθεί ένα απλό παράδειγμα δομής δεδομένων γραφήματος:

Παράδειγμα Γραφήματος στη Δομή Δεδομένων

Είναι ένα απλό μη κατευθυνόμενο γράφημα (ένα είδος γραφήματος). Εδώ το σύνολο των κορυφών είναι: {A, B, C, D, E, F}. Δύο κορυφές δημιουργούν μια ακμή. Για παράδειγμα, τα A και B συνδέονται με μια ακμή. Ωστόσο, τα A και F δεν συνδέονται με καμία ακμή.

Γραφικές ορολογίες στη δομή δεδομένων

Οι ακόλουθοι είναι μερικοί σημαντικοί όροι που χρησιμοποιούνται στη δομή δεδομένων γραφήματος:

ΌροςΠεριγραφή
ΚορυφήΚάθε στοιχείο δεδομένων ονομάζεται κορυφή ή κόμβος. Στην παραπάνω εικόνα, οι κορυφές A, B, C, D και E είναι οι κορυφές.
Άκρη (τόξο)Οι σύνδεσμοι σύνδεσης μεταξύ δύο κόμβων ή κορυφών ονομάζονται ακμή (Arc). Έχει δύο άκρα και αναπαρίσταται ως (startingVertex, endingVertex).
Μη κατευθυνόμενη άκρηΕίναι μια αμφίδρομη άκρη.
Σκηνοθετημένος EdgeΕίναι ένα άκρο μονής κατεύθυνσης.
Ζυγισμένη άκρηΈνα πλεονέκτημα με μια αξία πάνω του.
ΠτυχίοΣε ένα γράφημα, ο αριθμός των ακμών που συνδέονται με μια κορυφή ονομάζεται βαθμός.
ΠτυχίοΟ συνολικός αριθμός των εισερχόμενων άκρων που συνδέονται σε μια κορυφή.
Ανώτερος βαθμόςΟ συνολικός αριθμός των εξερχόμενων άκρων που συνδέονται σε μια κορυφή.
Αυτο-βρόχοςΜια ακμή ονομάζεται αυτο-βρόχος εάν τα δύο τελικά της σημεία συμπίπτουν.
ΓειτνίασηΟι κορυφές λέγονται γειτονικές αν υπάρχει μια ακμή που συνδέεται μεταξύ τους.

Τύποι Γραφημάτων στη Δομή Δεδομένων

Εδώ είναι η λίστα με τα πιο κοινά τύπους γραφημάτων στη δομή δεδομένων:

  • Σκηνοθετημένη Γράφημα
  • Μη κατευθυνόμενο γράφημα
  • Σταθμισμένο γράφημα
  • Γράφημα διπλής κατεύθυνσης
  • Άπειρο γράφημα
  • Μηδενικό γράφημα
  • Ασήμαντο γράφημα
  • Πολλαπλό γράφημα
  • Πλήρες γράφημα
  • Συνδεδεμένο γράφημα
  • Κυκλικό Γράφημα
  • Κατευθυνόμενο ακυκλικό γράφημα (DAG)
  • Γράφημα κύκλου
  • Διμερές γράφημα
  • Γράφημα Euler
  • Γράφημα Hamilton

Πώς να αναπαραστήσετε ένα γράφημα σε δομή δεδομένων;

Ένα γράφημα αποθηκεύεται συνήθως στη μνήμη χρησιμοποιώντας μία από τις δύο αναπαραστάσεις. Η επιλογή επηρεάζει την ποσότητα μνήμης που χρησιμοποιεί το γράφημα και την ταχύτητα εκτέλεσης των συνηθισμένων λειτουργιών.

  • Πίνακας Γειτνίασης: Ένας δισδιάστατος πίνακας V × V όπου το κελί [i][j] είναι 1 (ή το βάρος της ακμής) εάν υπάρχει ακμή μεταξύ της κορυφής i και της κορυφής j, και 0 διαφορετικά. Επιτρέπει την αναζήτηση ακμής O(1) αλλά χρησιμοποιεί χώρο O(V²), καθιστώντας το ιδανικό για πυκνά γραφήματα.
  • Λίστα Γειτονιάς: Ένας πίνακας λιστών όπου κάθε κορυφή αποθηκεύει μια λίστα με τις γειτονικές της κορυφές. Χρησιμοποιεί χώρο O(V + E) και είναι αποτελεσματικός για αραιά γραφήματα, γι' αυτό και τα περισσότερα γραφήματα του πραγματικού κόσμου το χρησιμοποιούν.

Μπορείτε να διαβάσετε περισσότερα σχετικά με αυτά στο λίστα γειτνίασης και αναπαράσταση πίνακα ενός γραφήματος tutorial.

Εφαρμογές Δομής Δεδομένων Γραφημάτων

Ένα γράφημα έχει πολλές περιπτώσεις χρήσης. Υπάρχουν πολλοί αλγόριθμοι που χρησιμοποιούν Γραφήματα. Ακολουθούν μερικές από τις εφαρμογές του Γράφου:

  • Google Οι Χάρτες χρησιμοποιούν γραφήματα για να βρουν τη διασταύρωση δύο δρόμων και να υπολογίσουν την απόσταση μεταξύ δύο τοποθεσιών. Για παράδειγμα, Dijkstra, για την εύρεση της μικρότερης απόστασης μεταξύ της τοποθεσίας προέλευσης και του προορισμού.
  • Το Facebook χρησιμοποιεί Γραφήματα για να βρει τους κοινούς φίλους των χρηστών. Ο αλγόριθμός του θεωρεί κάθε χρήστη ως κόμβο ενός γραφήματος.
  • Για την κατανομή πόρων, χρησιμοποιείται ένα DAG (Directed Acyclic Graph - Κατευθυνόμενο Ακυκλικό Γράφημα). Ελέγχει την εξάρτηση των πόρων.
  • The Google Οι μηχανές αναζήτησης χρησιμοποιούν γραφήματα για να δημιουργήσουν την κατάταξη των ιστοσελίδων.
  • Ενας χάρτηςping Η συσκευή χρησιμοποιεί τη δομή δεδομένων γραφήματος.
  • A router και το πρωτόκολλό του χρησιμοποιούν το Γράφημα για να μάθουν τη διαδρομή προς τον προορισμό.

Συχνές Ερωτήσεις

Τα Γραφηματικά Νευρωνικά Δίκτυα μαθαίνουν από δεδομένα με γραφική δομή για την ανίχνευση απάτης, τις συστάσεις και την ανακάλυψη ναρκωτικών. Τα γραφήματα γνώσης υποστηρίζουν την απάντηση ερωτήσεων με τεχνητή νοημοσύνη και τα πλαίσια βαθιάς μάθησης μοντελοποιούν κάθε υπολογισμό ως γράφημα λειτουργιών.

Ναι. Οι βοηθοί τεχνητής νοημοσύνης όπως το GitHub Copilot μπορούν να δημιουργήσουν υλοποιήσεις BFS, DFS, Dijkstra και τοπολογικής ταξινόμησης από μια απλή περιγραφή. Θα πρέπει να δοκιμάσετε περιπτώσεις ακμής, όπως αποσυνδεδεμένους κόμβους, κύκλους και κενά γραφήματα, πριν χρησιμοποιήσετε τον κώδικα.

Ένα δέντρο είναι ένας ειδικός τύπος γραφήματος που είναι συνδεδεμένος και δεν έχει κύκλους, με ακριβώς μία διαδρομή μεταξύ οποιωνδήποτε δύο κόμβων. Ένα γράφημα είναι πιο γενικό: μπορεί να περιέχει κύκλους, αποσυνδεδεμένα μέρη και κατευθυνόμενες ή σταθμισμένες ακμές.

Οι δύο κύριες μέθοδοι διάσχισης είναι η Αναζήτηση Πρώτα κατά Πλάτος (BFS), η οποία εξερευνά επίπεδο προς επίπεδο χρησιμοποιώντας μια ουρά, και η Αναζήτηση Πρώτα κατά Βάθος (DFS), η οποία εξερευνά όσο το δυνατόν πιο βαθιά χρησιμοποιώντας μια στοίβα ή αναδρομή πριν από την επιστροφή.tracΒασιλιάς.

Συνοψίστε αυτήν την ανάρτηση με: