Relazione di ricorrenza su programma in C.

di il
3 risposte

Relazione di ricorrenza su programma in C.

Salve a tutti, avrei bisogno di aiuto e suggerimenti per la risoluzione di questo esercizio di cui vi allegherò la consegna qui sotto. Vi chiedo di aiutarmi nella risoluzione, più che altro, dirmi come giungere alla relazione di ricorrenza perché non mi è chiaro come calcolarla sia per il caso ottimo e pessimo, mi servono delle dritte e dei consigli nello scrivere quelle relazioni (ovviamente non vi chiedo di risolvermi l'esercizio), grazie.

PS: Non so se ho scritto nella sezione giusta, quindi scusate se ho sbagliato sezione (in caso indirizzatemi verso la sezione giusta). L'ho collocata qui perché l'esercizio è scritto in linguaggio C.
Allegati:
20577_f21455faa93b3073ee46f614536e51e0.png
20577_f21455faa93b3073ee46f614536e51e0.png

3 Risposte

  • Re: Relazione di ricorrenza su programma in C.

    Se n è minore o uguale a zero, il tempo computazionale è quello di g(n)
    Se n è dispari pure

    Se n è pari e positivo, si continua a sottrarre -2 e fare un'operazione O(1) (la somma di h(n)) fino a quando si arriva a zero, dopodiché si ricade in g(n). Il tempo computazionale in questo caso sarè del tipo T(n) = H(n/2) + O(g(n)), e la relazione ricorsiva di H(n) è veramente semplice dato che fai 2 operazioni O(1) a ogni passaggio
  • Re: Relazione di ricorrenza su programma in C.

    Weierstrass ha scritto:


    Se n è minore o uguale a zero, il tempo computazionale è quello di g(n)
    Se n è dispari pure

    Se n è pari e positivo, si continua a sottrarre -2 e fare un'operazione O(1) (la somma di h(n)) fino a quando si arriva a zero, dopodiché si ricade in g(n). Il tempo computazionale in questo caso sarè del tipo T(n) = H(n/2) + O(g(n)), e la relazione ricorsiva di H(n) è veramente semplice dato che fai 2 operazioni O(1) a ogni passaggio
    Scusa, non mi è chiaro cosa intendi quando dici che ad ogni passaggio faccio due operazioni O(1); inoltre perché hai rappresentato h(n) con la H maiuscola, in che senso relazione ricorsiva?
    Hai per caso usato il metodo iterativo per giungere a quella relazione (T(n) = H(n/2) + O(g(n))? Perchè io ho usato quello, mi venuta del tipo: O(g(n)) + c*(n/2), dove c sarebbe una costante che ho sostituito ad h(n) dato che è O(1). Il caso ottimo è comunque quello in cui n <=0 o dispari, mentre il pessimo quello in cui pari e maggiore di zero.
    Mi è sembrato di capire che il costo rimane O(n*log(n)) sia nel caso ottimo che pessimo, puoi confermarmelo anche tu?
  • Re: Relazione di ricorrenza su programma in C.

    H è una lettera a caso per indicare il tempo computazionale H(n) di quella parte di codice

    H(n+1) = H(n) + 2 => H(n)=2n

    Quindi il worst case sarà O(n)+O(n*log(n))=O(n*log(n))

    esattamente come nel best case, come hai detto tu
Devi accedere o registrarti per scrivere nel forum
3 risposte