Visualizzazione dei risultati da 1 a 3 su 3

Discussione: strutture dati in c

  1. #1

    strutture dati in c

    devo implementare una somma e sottrazione binaria in c con i bit dati da input da tastiera.
    Visto che devo stringere il tempo di esecuzione e la memoria allocata (anche se le due cose sono inversamente proporzionali....) pensavo ad un array da riallocare dinamicamente man mano che la cifra diventa maggiore, "allungandolo" ogni volta di un tot fisso.
    Esistono strutture migliori? Liste? Alberi non direi ma non si sa mai...... HELP ME

  2. #2
    Utente di HTML.it L'avatar di infinitejustice
    Registrato dal
    Nov 2001
    residenza
    Barcelona
    Messaggi
    772

    Re: strutture dati in c

    Originariamente inviato da Bloody3000
    tempo di esecuzione e la memoria allocata (anche se le due cose sono inversamente proporzionali....)
    nn sono direttamente proporzionali?
    Live fast. Troll hard.
    Pythonist | Djangonaut | Puppeteer | DevOps | OpenStacker | Lost in malloc
    Team Lead @Gameloft Barcelona

  3. #3
    Non esiste una regola specifica di proporzionalità tra tempo di esecuzione e consumo di memoria.

    Ma spesso aumentando il consumo di memoria si abbassa asintoticamente il tempo di esecuzione.

    Esempi.

    Tabella ad accesso diretto:
    tempo di esecuzione per la ricerca: O(1)
    memoria: bisogna allocarne tanta da contenere tutto l'universo U di tutte le possibili chiavi da inserire. O(U)

    Tabella hash:
    tempo di esecuzione per la ricerca:
    con liste: O(1+a)
    con indirizzamento apero: O((1/a)*ln(1/(1-a))
    memoria: proporzionale al numero di chiavi K memorizzate e non a tutto l'universo U delle chiavi ammissibili. O(K)

    Alberi binari:
    tempo di esecuzione per le operazioni: O(log(n))
    memoria: proporzionale al numero di elementi nell'albero.

    Liste:
    tempo di esecuzione: O(log(n))
    memoria: proporzionale al numero di elementi nell'albero.

    Programmazione dinamica:
    es: Prodotto di una sequenza di matrici, con il minor numero di moltiplicazioni scalari.
    tempo di esecuzione, parentesizzazione ottima : O(m^3) (m = numero di matrici)
    memoria per il calcolo della parentesizzazione ottima : O(m^2).

    Senza programmazione dinamica si risparmia il consumo di memoria pari a O(m^2), ma il tempo di esecuzione diventa esponenziale O(4^m)
    , perchè è necessario ricercare tutte le parentesizzazioni possibili.

    L'idea è sfruttare qualche forma caching per far diminiuire il tempo di esecuzione, accettando il compromesso di un cosumo maggiore di memoria.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.