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

Τι είναι οι Πολυδιάστατοι Αλγόριθμοι Αναζήτησης;

Βασικές Έννοιες

  1. Διαστάσεις:
    • Σε ένα διάγραμμα, οι διαστάσεις είναι τα διαφορετικά επίπεδα που περιέχουν δεδομένα.
    • Για παράδειγμα, ένας πίνακας (matrix) είναι μια διδιάστατη δομή δεδομένων, που σημαίνει ότι έχει σειρές και στήλες.
  2. Πολυδιάστατες Δομές Δεδομένων:
    • Οι πολυδιάστατες δομές δεδομένων είναι πίνακες που έχουν περισσότερες από μία διαστάσεις.
    • Παραδείγματα περιλαμβάνουν διδιάστατους πίνακες (2D arrays), τρισδιάστατους πίνακες (3D arrays), και γενικότερα n-διάστατους πίνακες (nD arrays).

Παράδειγμα Διδιάστατου Πίνακα (2D Array)

Ας πάρουμε έναν διδιάστατο πίνακα:

1  2
3  4

Αυτός ο πίνακας έχει 2 σειρές και 2 στήλες. Αν θέλουμε να βρούμε τον αριθμό 3, πρέπει να ψάξουμε και στις δύο διαστάσεις, δηλαδή να ελέγξουμε τόσο τις σειρές όσο και τις στήλες.

Πώς Λειτουργούν οι Πολυδιάστατοι Αλγόριθμοι Αναζήτησης;

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

Διαδικασία Αναζήτησης σε Διδιάστατο Πίνακα

  1. Επανάληψη στις Διαστάσεις:
    • Για κάθε γραμμή στον πίνακα (πρώτη διάσταση).
    • Για κάθε στήλη στη γραμμή (δεύτερη διάσταση).
  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;
    }
}