Sobes.tech
Junior — Middle

Ako je možné predstaviti in opisati povezave in medsebojne odnose med vrhovi v grafni strukturi?

sobes.tech AI

Odpoveď od AI

Väzby a vzťahy medzi vrcholmi v grafe sa zvyčajne opisujú pomocou hrán. Hlavné spôsoby reprezentácie grafu:

  • Zoznam susedov: pre každý vrchol sa uchováva zoznam susedných vrcholov, s ktorými je spojený. Je to efektívny spôsob pre redšie grafy.

  • Matica susednosti: dvojrozmerná matica, kde prvok [i][j] indikuje prítomnosť (a prípadne váhu) hrany medzi vrcholmi i a j. Vhodné pre husté grafy.

  • Zoznam hrán: jednoducho zoznam všetkých hrán, kde každá hrana obsahuje informácie o počiatočných a koncových vrcholoch (a váhe, ak je).

Napríklad v Jave môže byť graf takto reprezentovaný:

class Graph {
    private Map<Integer, List<Integer>> adjacencyList = new HashMap<>();

    void addEdge(int from, int to) {
        adjacencyList.computeIfAbsent(from, k -> new ArrayList<>()).add(to);
        // Pre neorientovaný graf pridať opačnú hranu
        // adjacencyList.computeIfAbsent(to, k -> new ArrayList<>()).add(from);
    }
}

Takto sú vzťahy medzi vrcholmi modelované hraniami, a dátová štruktúra sa volí podľa úlohy a vlastností grafu.