Titolo del testo
Pt ricorsiva chiamato costo speso all'interno della funzione di iterazione Metodo "" dipendente si la sola ricorsione dalla srotola ottenendo sommatoria una dimensione n{ 011 ) ose n = T ( )n = - 011 /) 1Se T ( 2) 7nn+ ?' = DT 3-= /) T(1) 8)( 1-( ((1) ) +/Tengiz I0 Tiny 011) (1)01) = D 20 + 0011= O( 1-(1)+ nn+ +=n = =+ .1) 80 (T 14+ )( /n 011 (tt)) nCaga"Li Caga log0TI(0( )= 1) (/) ))t (1)(1)2 == O (1) 0( =t n O1 (O(1) n)=)(' + +n+. . n. .. ziifermoMie 1 loga/ 2=quando =Dn )2 (n=D = nEsempio 2 :{ (1- 2) 1+ >/n nsen1- ( ) =n 1 1se n = /' ° 22) T 23/ 21MI 4T ( ( T( 8)T () T14/2 (MIh /n = 22n 2) n n +n /n1n/+ nn n+ )-1= n= ++ + + ==+K '- py 1 "fermoMi CagaTI 2=DI= 1 n=D quando+ ( )= K=D= = nèi o= ⇐zloda )( 1n - *=D = + 1- (1)i o= ' @92" i" 'Cobain 'n) 1 )- 1n a (( 112 )1- ydi -ISapendo- TI+= 1)che = * n=D = 1n +i Oi. .o = =.gµ ( y , ,µ z, _@92 ( )n( ,)( 11212h 1-- % 1%( ( ( 0= 1 ) 11 1 1)2K2h 1 2h (=2h
Metodo sostituzione della Ricerca Lineare Ricorsiva:
Dato l'input di un elemento da ricercare in un vettore, si vuole scrivere una funzione ricorsiva che torna la posizione interna dell'elemento nel vettore, se presente. Si considera una ricorsione di tipo lineare, dove ad ogni chiamata si considera un vettore di dimensione più piccola.
La funzione di ricerca lineare ricorsiva si scrive come:
RicRicercaLineare(V, POS, n) if POS < 0 or POS >= n return -1; // elemento non trovato nel vettore if V[POS] == elemento return POS; // elemento trovato alla posizione POS return RicRicercaLineare(V, POS + 1, n); // chiamata ricorsiva con vettore di dimensione più piccola
L'equazione di ricorrenza per l'algoritmo di ricerca lineare ricorsiva è:
T(n) = T(n-1) + 1, se n > 1 T(1) = 1
Si può intuire la soluzione del metodo utilizzando la sostituzione e l'induzione matematica per dimostrare che la soluzione è effettivamente quella.
Riscrivo la notazione:
asintoticaTcn senza usare) :{ al ese n =1- ( )n = *Tin nc se1) 1+ >- TcnDobbiamo tnTcndimostrare che- ovvero )) che E0in Kn)= ,=D tkzal1 al1- (1)base E- fncaso =D vero= =DK k: .,Passo (' Ipotesiinduttivo induttivo veroe) ETin: K 1)in -1-.Devo=D tidimostrare )che En K (n )' Per fTcn kTln ()* E1) C ( -1Ckn C) iKn=1) =DKnc= = C KZC70K Kn + K+ - -- -- -TÈ , 01Tcn=D KZ0 K Z) C( ) sen e=Esempio 2 :{ Tln / 1n) >2n +Tch ) = 1 1n =Ipotizzo Tlh ETch0 (che- ) =p ) cn)n= TÌI tczE1 CE)1) Caso base n 1C1 =D: =Passo Ipotizzo tsiainduttivo 'che E n''vero Tcnche Cn2) <: ) nDimostro il tchgenerico=D cn)caso E §Ez(( E1- ( TC E ( Cna) CMI 1/ =D En 12)2)n + )nn= + -1n =+nè FCE=D EC 72=D CI2 C 2C 2=D+Teorema master risolvereviene utilizzato ricorrenza ricorsivialgoritmidiequazioni dimetodo percomebasati dividetecnica et imperasulla ore :dividi- dimensionedividere problemiil diproblema in diascolto dimensioneper: n/ b( )D 1n > i- risolvi
ricorsivamente risolvi sottoproblema:
i ricambini ricambino le soluzioni:
1) se n > 1:
- ricorsivamente inclusi il sottoproblema con n-1 e il sottoproblema con n/2
- le chiamate della funzione escluse per costo
2) se n = 1:
- soluzioni = 1
3) se n = 0:
- soluzioni = 0
Vogliamo la regolarità C-3:
1) se n > 0:
- la ricombinazione delle soluzioni deve essere inclusa nel tempo di esecuzione della funzione
- le chiamate della funzione devono essere escluse per costo
2) se n = 0:
- la ricombinazione delle soluzioni deve essere inclusa nel tempo di esecuzione della funzione
Esempio (1 caso 2):
T(1) = 1
T(n) = T(n-1) + T(n/2)
Esempio (3 caso 2):
T(n) = 3*T(n-1) + 9
generica C-3:
T(n) = b*T(n-1) + f(n)
dove b = 3 e f(n) = 9
Verifico la regolarità C-3:
1) T(0) = 1
2) T(n) = b*T(n-1) + f(n)
3) T(n) >= 0 per ogni n >= 0
Ec/Q) f 93 (/( c. =D cc ( =D 34 )=n n) nn .0 (Tin fin )- ) (= n)=)Esempio (3 1)caso1- /9 Tln 3))( =n + n. / fb)(= at n + ( )n' finb =39 )ai n; ; = @ E)93° n2)E)lodo E(b-f 0 ' --Caso ( ( 11 0 =D)= )E (- : n =D=( ☐= n) ☐-nn =Casba n2( ()1- ))( =n = n datiStruttureè puòinsieme il variabilevalorevaloredato appartenente cheun = unaun a unassumere è insiemetipo di costituito aiastratto ) valori( operatorialato unun cheeda suhannoquei valori senso è memorizzaticollezionedatistruttura cosidatidi neluna come sonounainsieme diprogrammiaicalcolatore loro agisconoche su,è tiporealizzazioneparticolare tipodi> addato astrattouna di dima un,corrispondere diverserealizzazionidato astratto possonoSEQUENZAdatodiTipo è" " elementiinsieme di posizionedacaratterizzatisequenza posiuno un una :.5 Sn= 52Se , ... ., l'Esistono> la fineinizio dellainoltre posizioni chespecialiove marcanoposo eposne +, , ,sequenzaÈ lineare
Ordinata rappresenta la struttura di dati che valorizza una sequenza unica. L'ordine in cui i valori compaiono è più importante, volte dove un valore può comparire all'interno della sequenza. I metodi per le sequenze sono:
isEmpty()
: restituiscetrue
se la sequenza è vuota,false
altrimenti.pos()
: restituisce la posizione dell'elemento corrente.next()
: restituisce la posizione dell'elemento successivo.prev()
: restituisce la posizione dell'elemento precedente.insert(item, pos)
: inserisce l'elemento item nella posizione pos.remove(pos)
: rimuove l'elemento contenuto nella posizione pos.read(pos)
: legge l'elemento di tipo item nella posizione pos.write(item, pos)
: scrive l'elemento di tipo item nella posizione pos.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Algoritmi - Appunti
-
Algoritmi e Programmazione - Appunti
-
Appunti Controlli
-
Appunti di Dati e Algoritmi 1