Ας δούμε πιο αναλυτικά τι είναι οι πολυδιάστατοι αλγόριθμοι αναζήτησης και πώς λειτουργούν.
Τι είναι οι Πολυδιάστατοι Αλγόριθμοι Αναζήτησης;
Βασικές Έννοιες
- Διαστάσεις:
- Σε ένα διάγραμμα, οι διαστάσεις είναι τα διαφορετικά επίπεδα που περιέχουν δεδομένα.
- Για παράδειγμα, ένας πίνακας (matrix) είναι μια διδιάστατη δομή δεδομένων, που σημαίνει ότι έχει σειρές και στήλες.
- Πολυδιάστατες Δομές Δεδομένων:
- Οι πολυδιάστατες δομές δεδομένων είναι πίνακες που έχουν περισσότερες από μία διαστάσεις.
- Παραδείγματα περιλαμβάνουν διδιάστατους πίνακες (2D arrays), τρισδιάστατους πίνακες (3D arrays), και γενικότερα n-διάστατους πίνακες (nD arrays).
Παράδειγμα Διδιάστατου Πίνακα (2D Array)
Ας πάρουμε έναν διδιάστατο πίνακα:
1 2
3 4
Αυτός ο πίνακας έχει 2 σειρές και 2 στήλες. Αν θέλουμε να βρούμε τον αριθμό 3, πρέπει να ψάξουμε και στις δύο διαστάσεις, δηλαδή να ελέγξουμε τόσο τις σειρές όσο και τις στήλες.
Πώς Λειτουργούν οι Πολυδιάστατοι Αλγόριθμοι Αναζήτησης;
Οι πολυδιάστατοι αλγόριθμοι αναζήτησης λειτουργούν ελέγχοντας συστηματικά κάθε στοιχείο στις διαφορετικές διαστάσεις της δομής δεδομένων μέχρι να βρεθεί το ζητούμενο στοιχείο ή να τελειώσουν τα δεδομένα.
Διαδικασία Αναζήτησης σε Διδιάστατο Πίνακα
- Επανάληψη στις Διαστάσεις:
- Για κάθε γραμμή στον πίνακα (πρώτη διάσταση).
- Για κάθε στήλη στη γραμμή (δεύτερη διάσταση).
- Έλεγχος Στοιχείου:
- Ελέγχουμε αν το στοιχείο που ψάχνουμε βρίσκεται στη συγκεκριμένη θέση του πίνακα.
- Αποτέλεσμα Αναζήτησης:
- Αν βρούμε το στοιχείο, επιστρέφουμε τη θέση του (γραμμή, στήλη).
- Αν δεν βρούμε το στοιχείο, ενημερώνουμε ότι δεν βρέθηκε.
Ψευδογλώσσα
Η ψευδογλώσσα είναι ένας τρόπος να γράφουμε τον αλγόριθμο χωρίς να χρησιμοποιούμε συγκεκριμένη γλώσσα προγραμματισμού. Ας γράψουμε έναν αλγόριθμο αναζήτησης για έναν πίνακα 2×2:
Διαδικασία Αναζήτηση(πίνακας, στοιχείο)
Για κάθε γραμμή στον πίνακα
Για κάθε στήλη στη γραμμή
Αν πίνακας[γραμμή][στήλη] = στοιχείο τότε
Επιστροφή (γραμμή, στήλη)
Τέλος_αν
Τέλος_για
Τέλος_για
Επιστροφή "Δεν βρέθηκε"
Τέλος_Διαδικασίας
C#
Τώρα ας δούμε πώς μπορούμε να γράψουμε αυτόν τον αλγόριθμο σε C#.
using System;
class Program
{
static void Main()
{
int[,] matrix = {
{ 1, 2 },
{ 3, 4 }
};
(int row, int col)? result = Search(matrix, 3);
if (result.HasValue)
{
Console.WriteLine($"Βρέθηκε στη θέση: ({result.Value.row}, {result.Value.col})");
}
else
{
Console.WriteLine("Δεν βρέθηκε");
}
}
static (int, int)? Search(int[,] matrix, int target)
{
for (int row = 0; row < matrix.GetLength(0); row++)
{
for (int col = 0; col < matrix.GetLength(1); col++)
{
if (matrix[row, col] == target)
{
return (row, col);
}
}
}
return null;
}
}