Dato un grafico aciclico diretto, , è possibile supportare in modo efficiente le seguenti operazioni?
- : determina se esiste un percorso in dal nodo al nodo
- : aggiunge un bordo da a nel grafico
- : rimuove il bordo da a in
- : aggiunge un vertice a G
- : rimuove un vertice da G
Alcune note:
- Se non consentissimo il non , sembra che sarebbe facile mantenere le informazioni di connessione, usando una struttura di dati di tipo disgiunto.
- Ovviamente, potrebbe essere implementato usando la profondità o l'ampiezza della ricerca, usando l'ingenua rappresentazione del grafico basata su puntatore. Ma questo è inefficiente.
Spero in tempo ammortizzato costante o logaritmico per tutte e tre le operazioni. È possibile?
remove
anche i bordi degli incidenti? In tal caso, richiedere che tale operazione sia il tempo O (log n) potrebbe essere troppo da sperare….