Mostra notizie nelle discussioni
  • Avatar
    Scritto da
    Non Autenticato
    il 2007-09-29 19:45:00.0 alle 2007-09-29 19:45:00.0
    Complessità computazionale
    Non pretendo che mi si faccia un corso sul forum, ma voglio solo chiarirmi le idee.

    da questo sito
    http://digilander.libero.it/unno2/sort/complessita...
    ho trovato che

    Dato un algoritmo A la complessità viene determinata contando il numero di operazioni aritmetiche e logiche, accesso ai file, letture e scritture in memoria, etc.

    Occorre tener presente che il tempo t dipende dai seguenti fattori:
    la macchina usata, intendendo con ciò l'hardware, il sistema operativo, il compilatore ed, in macchine multitasking, il carico;
    la configurazione dei dati in ingresso;
    la dimensione dei dati in ingresso.


    il ché significa, come dico io, che la complessità computazionale di un algoritmo dipende anche dalla macchina presa in considerazione per la sua esecuzione.

    Quindi, supponendo di possedere una macchina che non sa eseguire moltiplicazioni ma solo addizioni...

    se l'addizione tra A e B è O(1) (vera per ipotesi, per le peculiarità della macchina astratta presa in considerazione)

    B addizioni sono O(B), giusto?
    Se invece la moltiplicazione tra A e B è presa in esame, la complessità è O(B), giusto?

    Quindi, tornando al caso in esame, ovvero sommatoria di N numeri:
    con ciclo: O(N)
    con formula di gauss: O(N).


    QED.


    Ps per avvelentani: come fa ad essere la moltiplicazione polilogaritmica in una macchina dove le addizioni sono O(1)?
    • Avatar
      Scritto da
      Non Autenticato
      il 2007-09-29 20:36:00.0 alle 2007-09-29 20:36:00.0
      Re: Complessità computazionale

      - Scritto da:
      > Non pretendo che mi si faccia un corso sul forum,
      > ma voglio solo chiarirmi le
      > idee.
      >
      > da questo sito
      > http://digilander.libero.it/unno2/sort/complessita
      > ho trovato che
      >
      > Dato un algoritmo A la complessità viene
      > determinata contando il numero di operazioni
      > aritmetiche e logiche, accesso ai file, letture e
      > scritture in memoria, etc.
      >
      >
      > Occorre tener presente che il tempo t dipende dai
      > seguenti fattori:
      >
      > la macchina usata, intendendo con ciò l'hardware,
      > il sistema operativo, il compilatore ed, in
      > macchine multitasking, il
      > carico;
      > la configurazione dei dati in ingresso;
      > la dimensione dei dati in ingresso.

      >
      > il ché significa, come dico io, che la
      > complessità computazionale di un algoritmo
      > dipende anche dalla macchina presa in
      > considerazione per la sua
      > esecuzione.
      >
      > Quindi, supponendo di possedere una macchina che
      > non sa eseguire moltiplicazioni ma solo
      > addizioni...
      >
      > se l'addizione tra A e B è O(1) (vera per
      > ipotesi, per le peculiarità della macchina
      > astratta presa in
      > considerazione)
      >
      > B addizioni sono O(B), giusto?
      > Se invece la moltiplicazione tra A e B è presa in
      > esame, la complessità è O(B),
      > giusto?
      >
      > Quindi, tornando al caso in esame, ovvero
      > sommatoria di N
      > numeri:
      > con ciclo: O(N)
      > con formula di gauss: O(N).
      >
      >
      > QED.
      >
      >
      > Ps per avvelentani: come fa ad essere la
      > moltiplicazione polilogaritmica in una macchina
      > dove le addizioni sono
      > O(1)?

      La risposta è scontata: ma anche no.
      • Avatar
        Scritto da
        Non Autenticato
        il 2007-09-29 21:08:00.0 alle 2007-09-29 21:08:00.0
        Re: Complessità computazionale

        - Scritto da:
        >
        > - Scritto da:
        > > Non pretendo che mi si faccia un corso sul
        > forum,
        > > ma voglio solo chiarirmi le
        > > idee.
        > >
        > > da questo sito
        > >
        > http://digilander.libero.it/unno2/sort/complessita
        > > ho trovato che
        > >
        > > Dato un algoritmo A la complessità viene
        > > determinata contando il numero di operazioni
        > > aritmetiche e logiche, accesso ai file, letture
        > e
        > > scritture in memoria, etc.
        > >
        > >
        > > Occorre tener presente che il tempo t dipende
        > dai
        > > seguenti fattori:
        > >
        > > la macchina usata, intendendo con ciò
        > l'hardware,
        > > il sistema operativo, il compilatore ed, in
        > > macchine multitasking, il
        > > carico;
        > > la configurazione dei dati in ingresso;
        > > la dimensione dei dati in ingresso.

        > >
        > > il ché significa, come dico io, che la
        > > complessità computazionale di un algoritmo
        > > dipende anche dalla macchina presa in
        > > considerazione per la sua
        > > esecuzione.
        > >
        > > Quindi, supponendo di possedere una macchina che
        > > non sa eseguire moltiplicazioni ma solo
        > > addizioni...
        > >
        > > se l'addizione tra A e B è O(1) (vera per
        > > ipotesi, per le peculiarità della macchina
        > > astratta presa in
        > > considerazione)
        > >
        > > B addizioni sono O(B), giusto?
        > > Se invece la moltiplicazione tra A e B è presa
        > in
        > > esame, la complessità è O(B),
        > > giusto?
        > >
        > > Quindi, tornando al caso in esame, ovvero
        > > sommatoria di N
        > > numeri:
        > > con ciclo: O(N)
        > > con formula di gauss: O(N).
        > >
        > >
        > > QED.
        > >
        > >
        > > Ps per avvelentani: come fa ad essere la
        > > moltiplicazione polilogaritmica in una macchina
        > > dove le addizioni sono
        > > O(1)?
        >
        > La risposta è scontata: ma anche no.

        Perché nn mi aiuti invece di fare il saccentone?
        In lacrimeIn lacrime
    • Avatar
      ☺
      Scritto da
      avvelentani
      Cubicolario
      il 2007-09-29 21:21:00.0 alle 2007-09-29 21:21:00.0
      Trollate totali: 18184
      Re: Complessità computazionale

      - Scritto da:
      > Non pretendo che mi si faccia un corso sul forum,
      > ma voglio solo chiarirmi le
      > idee.
      >
      > da questo sito
      > http://digilander.libero.it/unno2/sort/complessita
      > ho trovato che
      >
      > Dato un algoritmo A la complessità viene
      > determinata contando il numero di operazioni
      > aritmetiche e logiche, accesso ai file, letture e
      > scritture in memoria, etc.
      >
      >
      > Occorre tener presente che il tempo t dipende dai
      > seguenti fattori:
      >
      > la macchina usata, intendendo con ciò l'hardware,
      > il sistema operativo, il compilatore ed, in
      > macchine multitasking, il
      > carico;
      > la configurazione dei dati in ingresso;
      > la dimensione dei dati in ingresso.

      >
      > il ché significa, come dico io, che la
      > complessità computazionale di un algoritmo
      > dipende anche dalla macchina presa in
      > considerazione per la sua
      > esecuzione.

      Io invece ho trovato un sito che dice che George Bush e` un alieno rettiliano.

      >
      > Quindi, supponendo di possedere una macchina che
      > non sa eseguire moltiplicazioni ma solo
      > addizioni...
      >
      > se l'addizione tra A e B è O(1) (vera per
      > ipotesi, per le peculiarità della macchina
      > astratta presa in
      > considerazione)

      cosa sono A e B?

      >
      > B addizioni sono O(B), giusto?
      > Se invece la moltiplicazione tra A e B è presa in
      > esame, la complessità è O(B),
      > giusto?

      no. http://www.forumdeitroll.it/m.aspx?m_id=2065550

      La moltiplicazione e` quadratica nella dimensione dell'input ovvero polilogaritmica nel valore.

      >
      > Quindi, tornando al caso in esame, ovvero
      > sommatoria di N
      > numeri:
      > con ciclo: O(N)
      > con formula di gauss: O(N).
      >
      >
      > QED.

      'sto cazzo.

      >
      >
      > Ps per avvelentani: come fa ad essere la
      > moltiplicazione polilogaritmica in una macchina
      > dove le addizioni sono
      > O(1)?

      perche' implementi la moltiplicazione in colonna o l'algoritmo di karatsuba.
      I think happiness is love
      - Vladimir Putin
    • Avatar
      Scritto da
      Non Autenticato
      il 2007-09-29 21:27:00.0 alle 2007-09-29 21:27:00.0
      Re: Complessità computazionale

      - Scritto da:
      > Non pretendo che mi si faccia un corso sul forum,
      > ma voglio solo chiarirmi le
      > idee.
      >
      > da questo sito
      > http://digilander.libero.it/unno2/sort/complessita
      > ho trovato che
      >
      > Dato un algoritmo A la complessità viene
      > determinata contando il numero di operazioni
      > aritmetiche e logiche, accesso ai file, letture e
      > scritture in memoria, etc.
      >
      >
      > Occorre tener presente che il tempo t dipende dai
      > seguenti fattori:
      >
      > la macchina usata, intendendo con ciò l'hardware,
      > il sistema operativo, il compilatore ed, in
      > macchine multitasking, il
      > carico;
      > la configurazione dei dati in ingresso;
      > la dimensione dei dati in ingresso.

      >
      > il ché significa, come dico io, che la
      > complessità computazionale di un algoritmo
      > dipende anche dalla macchina presa in
      > considerazione per la sua
      > esecuzione.


      La complessità computazionale non dipende da fattori tecnici come il processore, i tempi delle istruzioni assembly etc. etc.
      La complessità computazione è misurata come numero di operazioni necessarie in funzione della grandezza dei dati in ingresso.
      Cosa si intende per operazione o dimensione dei dati in ingresso lo devi decidere tu in base alla tue necessità.
      Es: se devi ordinare dei dati, la dimensione del problema potrebbe essere il numero degli elementi da ordinare.

      >
      > Quindi, supponendo di possedere una macchina che
      > non sa eseguire moltiplicazioni ma solo
      > addizioni...
      >
      > se l'addizione tra A e B è O(1) (vera per
      > ipotesi, per le peculiarità della macchina
      > astratta presa in
      > considerazione)
      >
      > B addizioni sono O(B), giusto?

      Giusto

      > Se invece la moltiplicazione tra A e B è presa in
      > esame, la complessità è O(B),
      > giusto?

      No. Dipende dall'algoritmo che usi per fare la moltiplicazione.
      Pensa alla regola della moltiplicazione come la si faceva alle elementari.
      Dati due numeri A e B servono tante somme quante sono le cifre di B meno uno. Per produrre le somme parziali l'algoritmo consulta una tabella contente le tabelline.

      Con questo metodo se come dimensione del problema consideri il modulo dei numeri l'operazione risulta logaritmica O(logN)

      Es: se B è 1000, allora log(1000) = 3, quindi servono 3 somme
      se B = 100000, log(10000) = 5, quindi servono 5 somme.

      Come vedi il numero di somme è il logaritmo della dimensione del problema.



      Se invece come dimensione del problema consideri il numero di cifre dei fattori della moltiplicazione, allora la complessità risulta lineare O(N)




      >
      > Quindi, tornando al caso in esame, ovvero
      > sommatoria di N
      > numeri:
      > con ciclo: O(N)
      > con formula di gauss: O(N).
      >
      >
      > QED.
      >
      >
      > Ps per avvelentani: come fa ad essere la
      > moltiplicazione polilogaritmica in una macchina
      > dove le addizioni sono
      > O(1)?

      Come descritto sopra. Non sono avvelentani però spero di essermi spiegato
      • Avatar
        ☺
        Scritto da
        avvelenato
        un mezzo cavallo
        il 2007-09-29 21:51:00.0 alle 2007-09-29 21:51:00.0
        Trollate totali: 14239
        Re: Complessità computazionale

        - Scritto da:
        >
        > - Scritto da:
        > > Non pretendo che mi si faccia un corso sul
        > forum,
        > > ma voglio solo chiarirmi le
        > > idee.
        > >
        > > da questo sito
        > >
        > http://digilander.libero.it/unno2/sort/complessita
        > > ho trovato che
        > >
        > > Dato un algoritmo A la complessità viene
        > > determinata contando il numero di operazioni
        > > aritmetiche e logiche, accesso ai file, letture
        > e
        > > scritture in memoria, etc.
        > >
        > >
        > > Occorre tener presente che il tempo t dipende
        > dai
        > > seguenti fattori:
        > >
        > > la macchina usata, intendendo con ciò
        > l'hardware,
        > > il sistema operativo, il compilatore ed, in
        > > macchine multitasking, il
        > > carico;
        > > la configurazione dei dati in ingresso;
        > > la dimensione dei dati in ingresso.

        > >
        > > il ché significa, come dico io, che la
        > > complessità computazionale di un algoritmo
        > > dipende anche dalla macchina presa in
        > > considerazione per la sua
        > > esecuzione.
        >
        >
        > La complessità computazionale non dipende da
        > fattori tecnici come il processore, i tempi delle
        > istruzioni assembly etc.
        > etc.
        > La complessità computazione è misurata come
        > numero di operazioni necessarie in funzione della
        > grandezza dei dati in
        > ingresso.
        > Cosa si intende per operazione o dimensione dei
        > dati in ingresso lo devi decidere tu in base alla
        > tue
        > necessità.
        > Es: se devi ordinare dei dati, la dimensione del
        > problema potrebbe essere il numero degli elementi
        > da
        > ordinare.
        >

        beh sì mi sono spiegato male.
        Quando dico "dipende dalla macchina" intendo dire: dipende se un determinato algoritmo è preimplementato in hw e quindi il tempo per svolgerlo è identico a un altro.
        Ma probabilmente questo con la complessità c. c'entra poco o niente.

        > >
        > > Quindi, supponendo di possedere una macchina che
        > > non sa eseguire moltiplicazioni ma solo
        > > addizioni...
        > >
        > > se l'addizione tra A e B è O(1) (vera per
        > > ipotesi, per le peculiarità della macchina
        > > astratta presa in
        > > considerazione)
        > >
        > > B addizioni sono O(B), giusto?
        >
        > Giusto
        >
        > > Se invece la moltiplicazione tra A e B è presa
        > in
        > > esame, la complessità è O(B),
        > > giusto?
        >
        > No. Dipende dall'algoritmo che usi per fare la
        > moltiplicazione.
        > Pensa alla regola della moltiplicazione come la
        > si faceva alle
        > elementari.
        > Dati due numeri A e B servono tante somme quante
        > sono le cifre di B meno uno. Per produrre le
        > somme parziali l'algoritmo consulta una tabella
        > contente le
        > tabelline.
        >
        > Con questo metodo se come dimensione del problema
        > consideri il modulo dei numeri l'operazione
        > risulta logaritmica
        > O(logN)
        >
        > Es: se B è 1000, allora log(1000) = 3, quindi
        > servono 3
        > somme
        > se B = 100000, log(10000) = 5, quindi servono 5
        > somme.
        >
        > Come vedi il numero di somme è il logaritmo della
        > dimensione del
        > problema.
        >
        >
        >
        > Se invece come dimensione del problema consideri
        > il numero di cifre dei fattori della
        > moltiplicazione, allora la complessità risulta
        > lineare
        > O(N)
        >

        che è la moltiplicazione x come l'ho intesa io, ovvero somma reiterata B volte.

        > >
        > > Quindi, tornando al caso in esame, ovvero
        > > sommatoria di N
        > > numeri:
        > > con ciclo: O(N)
        > > con formula di gauss: O(N).
        > >
        > >
        > > QED.
        > >
        > >
        > > Ps per avvelentani: come fa ad essere la
        > > moltiplicazione polilogaritmica in una macchina
        > > dove le addizioni sono
        > > O(1)?
        >
        > Come descritto sopra. Non sono avvelentani però
        > spero di essermi
        > spiegato

        Quindi non avevo del tutto torto, a parte la confusione sulla dipendenza della cc dall'algoritmo e non dalla macchina?
        per il resto mi sei sembrato abbastanza chiaro.
        Mi dai ripetizioni di analisi 1 già che ci sei? Imbarazzato

        I pedoni possono muoversi solo in avanti.
        • Avatar
          ☺
          Scritto da
          avvelentani
          Cubicolario
          il 2007-09-29 22:08:00.0 alle 2007-09-29 22:08:00.0
          Trollate totali: 18184
          Re: Complessità computazionale

          - Scritto da: avvelenato
          > beh sì mi sono spiegato male.
          > Quando dico "dipende dalla macchina" intendo
          > dire: dipende se un determinato algoritmo è
          > preimplementato in hw e quindi il tempo per
          > svolgerlo è identico a un
          > altro.
          > Ma probabilmente questo con la complessità c.
          > c'entra poco o
          > niente.

          Non c'entra niente. Non e` detto che tutto quello che e` implementato in hardware prenda lo stesso tempo, nei vecchi processori non era cosi`, da cui la leggenda che una istruzione MUL prende piu` tempo di una ADD. Ora non e` piu` cosi`, ma perche' sono implementati per un input fisso.

          Il modo piu` semplice per capire la complessita` e` pensare che sia il numero di passi che servono ad una macchina di turing espresso come funzione della quantita` di nastro che occupa l'input. La cosa ganza e` che essendo espressa in notazione O puoi considerare costante quello che vuoi purche' tu resti coerente con te stesso.

          > > Se invece come dimensione del problema consideri
          > > il numero di cifre dei fattori della
          > > moltiplicazione, allora la complessità risulta
          > > lineare
          > > O(N)
          > >
          >
          > che è la moltiplicazione x come l'ho intesa io,
          > ovvero somma reiterata B
          > volte.

          La moltiplicazione in colonna, quella che dice lui, e` N**2. Quella che dici te sono exp(n) somme. E tra l'altro la somma e` in realta` lineare in N (che sono il numero di bit, non il valore)
          I think happiness is love
          - Vladimir Putin
<softv>

Pagina generata in 62 millisecondi

Utenti attivi: 10 nell'ultimo minuto, 32 negli ultimi cinque minuti, 55 negli ultimi 15 minuti