Sto cercando di strutturare un algoritmo efficientegrafico non orientato e bordo e (u, v) e decide se il bordo appartiene ad un ciclo nel grafico, ma non tutti i cicli! Il mio approccio è quello di eliminare il bordo (u, v) dal grafico ed eseguire BFS per vedere se v è ancora raggiungibile da u. Se sì, il grafico originale ha un ciclo contenente e, altrimenti non esiste. Ma non sono così sicuro di come modificare l'algoritmo che deciderà se il bordo non appartiene a tutti i cicli del grafico.
risposte:
1 per risposta № 1Un grafico non orientato può contenere un bordo che appartiene a tutti i suoi cicli grafici solo se questo grafico ha un singolo ciclo.
Vediamo un esempio: Edge (2,3) appartiene a due cicli, ma puoi sempre trovare un terzo ciclo a cui un tale spigolo non appartiene.
Dopo aver controllato che il bordo appartenga aalcuni cicli, è possibile verificare se questo è l'unico ciclo nel grafico rimuovendo questo bordo e controllando se il grafico ridotto ha alcun ciclo. Grazie a @nomanpouigt per averlo indicato.