Skip to content

Progetto di algoritmi e principi dell'informatica A.A. 2022-2023

License

Notifications You must be signed in to change notification settings

ale-polimi/progetto-API-2023

Repository files navigation

Prova Finale di Algoritmi e Principi dell'Informatica - A.A. 2022-2023

License: GPL v2

CMake on a single platform

Prova finale di algoritmi e principi dell'informatica per l'anno accademico 2022-2023.

Docente: Martineghi Davide

Valutazione: 24/30

Obiettivo del progetto

Realizzare un programma in C per la ricerca del percorso ottimo tra stazioni di servizio di un'autostrada.

Il programma non solo deve produrre un output corretto, ma deve rispettare dei vincoli di memoria e tempo CPU come in tabella:

Valutazione Memoria Tempo Esito
18 128 MiB 19 s
21 118 MiB 15 s
24 108 MiB 10 s
27 98 MiB 6 s
30 88 MiB 4 s
30L 78 MiB 1 s

Il mio progetto prendendo i dati dal verificatore ha i seguenti utilizzi di memoria e tempo:

  • Memoria: ~6,1 MiB
  • Tempo: ~6,3 s

Questi risultati possono variare a seconda della potenza di calcolo della macchina.

La specifica completa del progetto è disponibile qui.

I test sono disponibili qui.

Scelte progettuali

La struttura dati che rappresenta l'autostrada è una lista doppiamente concatenata; questa soluzione è stata scelta per semplicità implementativa e per il minor uso di memoria rispetto ad altre strutture dati.

Al fine di rispettare i limiti di tempo è stato necessario creare una cache contenente i puntatori alle ultime stazioni modificate o accedute. Il grafico seguente rappresenta il tempo di esecuzione del programma con input il file open_111.txt al variare della grandezza della cache:

alt text

Note

I tempi di esecuzione sono molto alti siccome il programma è stato eseguito in una macchina virtuale per questo test.

Strumenti utilizzati

Descrizione Strumento
IDE CLion
Compilatore gcc
Misurazione memoria Valgrind - Massif
Sistema operativo Windows 10 e Debian 11

Copyright e licenza

Il progetto è distribuito sotto licenza GPL v2, si applicano le limitazioni descritte in tale licenza.