[Algoritmi] Costo esecuzione visita DFS

Messaggioda jJjjJ » 04/07/2015, 14:18

Ho un dubbio a proposito del costo di esecuzione di una visità in profondità di un albero implementata in questo modo:

Codice:
algoritmo DFS( nodo r )
       Pila S
       S.push( r )
       while( not S.isEmpty() ) do
              u <- S.pop()
              if( u != null ) then
                     visita u
                     S.push( figlio dx di u )
                     S.push( figlio sx di u )


Per quanto riguarda il costo temporale ho cercato di considerare il caso peggiore. L'albero che visitiamo ha, per ogni nodo, al più due figli. Supponiamo che l'albero T abbia esattamente $n$ allora il caso peggiore è quando $T$ degenera in lista, poiché in questo caso, per ogni nodo di $T$ si impilano due record ( eventualmente nulli ) su S. Da ciò otteniamo che la grandezza della pila è $2n$ nel caso peggiore e dunque le iterazioni del ciclo while sono $O( n )$ da cui $T_{w o r st} = O( n ) $

Per quanto riguarda lo spazio sempre con lo stesso caso peggiore si ha che $S( n ) = 2n$ da cui $S(n) = O(n)$

E' corretto?
jJjjJ
Junior Member
Junior Member
 
Messaggio: 106 di 294
Iscritto il: 18/07/2013, 10:41

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Cronovirus » 04/07/2015, 18:06

Io sapevo che se il grafo ha $n$ nodi e $m$ lati, allora il tempo è $\Theta (n+m)$
Ultima modifica di Cronovirus il 05/07/2015, 00:19, modificato 1 volta in totale.
Cronovirus
Junior Member
Junior Member
 
Messaggio: 66 di 320
Iscritto il: 11/06/2015, 01:49

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Giova411 » 05/07/2015, 00:15

Sì, si dice nell'ordine di grandezza O(n + m), ossia somma di nodi ed archi.
Ma parlavi di albero o grafo?
Giova411
Advanced Member
Advanced Member
 
Messaggio: 1879 di 2254
Iscritto il: 16/11/2006, 00:34

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Cronovirus » 05/07/2015, 00:19

Un albero... è un grafo :D
Cronovirus
Junior Member
Junior Member
 
Messaggio: 67 di 320
Iscritto il: 11/06/2015, 01:49

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Giova411 » 05/07/2015, 00:20

Cronovirus ha scritto:Un albero... è un grafo :D
:smt023 (grafo non orientato, connesso e privo di cicli)
Giova411
Advanced Member
Advanced Member
 
Messaggio: 1880 di 2254
Iscritto il: 16/11/2006, 00:34

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda jJjjJ » 05/07/2015, 10:23

Come si dimostra?
jJjjJ
Junior Member
Junior Member
 
Messaggio: 107 di 294
Iscritto il: 18/07/2013, 10:41

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Cronovirus » 05/07/2015, 11:12

jJjjJ ha scritto:Come si dimostra?

Con google :D https://it.m.wikipedia.org/wiki/Ricerca_in_profondità
Cronovirus
Junior Member
Junior Member
 
Messaggio: 68 di 320
Iscritto il: 11/06/2015, 01:49

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda jJjjJ » 05/07/2015, 11:35

Ma siete sicuri che non sia un'implementazione su un grafo? Sembra più la visita di un grafo tramite l'individuazione di sottoalberi. Io ho chiesto della visita in profondità di un albero, e infatti se guardate l'algoritmo da me postato è molto diverso anche concettualmente da quello di wikipedia. In ogni caso poi sto parlando di un albero con al più due figli per ogni nodo, e dunque il numero degli archi è al più $ n - 1$ quindi la mia delimitazione va bene anche usando le vostre...
jJjjJ
Junior Member
Junior Member
 
Messaggio: 108 di 294
Iscritto il: 18/07/2013, 10:41

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda Cronovirus » 05/07/2015, 12:59

Non capisco il problema.. Il risultato che ti ho proposto e che poi ho visto essere anche su wikipedia è in generale sui grafi, poi se tu lo applichi ad un albero con al più n-1 archi è uguale. La dimostrazione che chiedevi è semplicemente applicare il tuo caso particolare a quello generale che ti ho proposto
Cronovirus
Junior Member
Junior Member
 
Messaggio: 69 di 320
Iscritto il: 11/06/2015, 01:49

Re: [Algoritmi] Costo esecuzione visita DFS

Messaggioda jJjjJ » 05/07/2015, 13:08

No perché i grafi non li abbiamo trattati e volevo vedere se potevo dimostrare come ho fatto io quel caso particolare...
jJjjJ
Junior Member
Junior Member
 
Messaggio: 109 di 294
Iscritto il: 18/07/2013, 10:41


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite