Eksplorimi i Algoritmit të Kërkimit të Grafikut (Graph Search) në PHP

Algoritmi Graph Search është një teknikë e rëndësishme në programimin PHP që përdoret për të gjetur shtigje ose lidhje midis kulmeve në një grafik. Kjo është veçanërisht e dobishme kur ju duhet të kërkoni për rrugën më të shkurtër, lidhjen ose ekzistencën e marrëdhënieve brenda të dhënave të përfaqësuara nga një strukturë grafiku.

Si funksionon algoritmi i kërkimit në grafik

Algoritmi i Kërkimit të Grafikut zakonisht përfshin kalimin e kulmeve dhe skajeve të një grafiku për të kërkuar informacione specifike.

  1. Nisja nga një kulm burimor: Algoritmi fillon në një kulm burimor dhe përshkon kulmet ngjitur përmes skajeve për të kërkuar një kulm ose shteg të dëshiruar të destinacionit.
  2. Kërkimi i parë në gjerësi(BFS) ose kërkimi i parë në thellësi(DFS): Ekzistojnë dy qasje kryesore për këtë algoritëm: Kërkimi i parë në gjerësi(BFS) dhe kërkimi i parë në thellësi(DFS). BFS kërkon kulmet ngjitur përpara se të kalojë në nivelin tjetër, ndërsa DFS hulumton më thellë në një degë përpara se të kthehet prapa.
  3. Kontrollimi i kulmit të destinacionit: Algoritmi kontrollon nëse ekziston kulmi ose marrëdhënia e dëshiruar e destinacionit. Nëse gjendet, algoritmi kthen rezultatin ose rrugën e duhur.

Avantazhet dhe disavantazhet e algoritmit të kërkimit në grafik

Përparësitë:

  • Lidhshmëria dhe gjetja e rrugëve: Ky algoritëm ndihmon në gjetjen e lidhjeve ose shtigjeve midis kulmeve në një grafik.
  • Gjetja e shtegut më të shkurtër: Kur përdorni një variabël të distancës, algoritmi mund të përcaktojë shtegun më të shkurtër midis kulmeve.

Disavantazhet:

  • Performanca varet nga struktura e grafikut: Performanca e algoritmit mbështetet në strukturën dhe madhësinë e grafikut.
  • Aftësia e kufizuar e kërkimit: Algoritmi mund të jetë i kufizuar kur kemi të bëjmë me grafikë të mëdhenj dhe kompleks.

Shembull dhe shpjegim

Imagjinoni që keni një rrjet social me përdoruesit dhe marrëdhëniet e tyre të paraqitura si grafik. Ju dëshironi të përcaktoni nëse ekziston një lidhje midis përdoruesit A ​​dhe përdoruesit B. Këtu është një shembull se si mund të zbatoni një algoritëm kërkimi grafik në PHP:

$graph = array(  
    'A' => array('B', 'C'),  
    'B' => array('A', 'D'),  
    'C' => array('A', 'E'),  
    'D' => array('B'),  
    'E' => array('C', 'F'),  
    'F' => array('E')  
);  
  
$startNode = 'A';  
$endNode = 'B';  
  
function searchGraph($graph, $start, $end) {  
    $visited = array();  
    $queue = new SplQueue();  
    $queue->enqueue($start);  
  
    while(!$queue->isEmpty()) {  
        $node = $queue->dequeue();  
  
        if(!isset($visited[$node])) {  
            $visited[$node] = true;  
  
            if($node === $end) {  
                return true;  
            }  
  
            foreach($graph[$node] as $neighbor) {  
                if(!isset($visited[$neighbor])) {  
                    $queue->enqueue($neighbor);  
                }  
            }  
        }  
    }  
  
    return false;  
}  
  
if(searchGraph($graph, $startNode, $endNode)) {  
    echo "There is a connection between $startNode and $endNode.";  
} else {  
    echo "There is no connection between $startNode and $endNode.";  
}  

Në këtë shembull, ne ndërtojmë një rrjet social virtual duke përdorur një grup për të simuluar kërkimin e një rruge midis dy përdoruesve brenda rrjetit. Ne përdorim metodën Breadth-First Search(BFS) për të përshkuar kulmet dhe skajet për të gjetur një lidhje midis përdoruesit A ​​dhe përdoruesit B. Nëse gjendet një lidhje, algoritmi kthen rezultatin se ka një marrëdhënie midis dy përdoruesve; përndryshe raporton se nuk ka asnjë lidhje.

Ndërsa ky shembull demonstron një algoritëm të thjeshtë kërkimi grafik, në realitet, algoritmet e kërkimit të grafikut mund të aplikohen gjerësisht për të gjetur lidhje, shtigje më të shkurtra dhe aplikacione të tjera të ndryshme në programimin PHP.