Junior — Middle
Jak lze znázornit a popsat vazby a souvislosti mezi vrcholy v grafové struktuře?
sobes.tech AI
Odpověď od AI
Vazby a vztahy medzi vrcholmi v grafovej štruktúre sa zvyčajne opisujú pomocou hrán. Hlavné spôsoby reprezentácie grafu:
-
Zoznam susednosti: 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.