154 resultados para complessità computazionale primalità problemi polinomiali algoritmo aks
em AMS Tesi di Laurea - Alm@DL - Università di Bologna
Resumo:
Questa tesi vuole fornire un'introduzione alla complessità computazionale e allo studio dei numeri primi riferito a questa materia. Si tratterà della Macchina di Turing e della sua importanza per calcolabilità e complessità, introducendo le classi P ed NP. Queste saranno approfondite studiando prima la classe di problemi NP-completi e successivamente fornendo alcuni esempi importanti. Nella parte finale ci si occuperà esplicitamente del problema dei numeri primi e si guarderà da vicino l'algoritmo AKS, dimostrandone la correttezza.
Resumo:
La trattazione è volta all'esposizione dell'algoritmo di Lindell per determinare in logspazio se due alberi sono isomorfi. Un'ampia parte introduttiva richiama i prerequisiti teorici necessari alla comprensione della parte di esposizione dell'algoritmo.
Resumo:
Partendo dallo studio del modello computazionale introdotto da Schönhage, la presente tesi si propone di fornire una simulazione delle Evolving Graph Structures di Leivant e Marion che ne conservi le proprietà in termini di complessità computazionale.
Resumo:
La tesi presenta l'algoritmo AKS, deterministico e polinomiale, scoperto dai matematici Agrawal, Kayal e Saxena nel 2002. Esso si basa su una generalizzazione del Piccolo Teorema di Fermat all'anello dei polinomi a coefficienti in Zp.
Resumo:
Solitamente il concetto di difficoltà è piuttosto soggettivo, ma per un matematico questa parola ha un significato diverso: anche con l’aiuto dei più potenti computer può essere impossibile trovare la soluzione di un sudoku, risolvere l’enigma del commesso viaggiatore o scomporre un numero nei suoi fattori primi; in questo senso le classi di complessità computazionale quantificano il concetto di difficoltà secondo le leggi dell’informatica classica. Una macchina quantistica, però, non segue le leggi classiche e costituisce un nuovo punto di vista in una frontiera della ricerca legata alla risoluzione dei celebri problemi del millennio: gli algoritmi quantistici implementano le proprietà straordinarie e misteriose della teoria dei quanti che, quando applicate lucidamente, danno luogo a risultati sorprendenti.
Resumo:
Introduzione alla crittografia e presentazione delle primitive matematiche attualmente utilizzate. Presentazione dei reticoli geometrici, riduzione reticolare e algoritmo LLL. Descrizione dei critto-sistemi Ajtai-Dwork e NTRU. In appendice introduzione a complessità computazionale, problemi P e NP.
Resumo:
Questo studio si propone di realizzare un’applicazione per dispositivi Android che permetta, per mezzo di un gioco di ruolo strutturato come caccia al tesoro, di visitare in prima persona città d’arte e luoghi turistici. Gli utenti finali, grazie alle funzionalità dell’app stessa, potranno giocare, creare e condividere cacce al tesoro basate sulla ricerca di edifici, monumenti, luoghi di rilevanza artistico-storica o turistica; in particolare al fine di completare ciascuna tappa di una caccia al tesoro il giocatore dovrà scattare una fotografia al monumento o edificio descritto nell’obiettivo della caccia stessa. Il software grazie ai dati rilevati tramite GPS e giroscopio (qualora il dispositivo ne sia dotato) e per mezzo di un algoritmo di instance recognition sarà in grado di affermare se la foto scattata rappresenta la risposta corretta al quesito della tappa. L’applicazione GeoPhotoHunt rappresenta non solo uno strumento ludico per la visita di città turistiche o più in generale luoghi di interesse, lo studio propone, infatti come suo contributo originale, l’implementazione su piattaforma mobile di un Content Based Image Retrieval System (CBIR) del tutto indipendente da un supporto server. Nello specifico il server dell’applicazione non sarà altro che uno strumento di appoggio con il quale i membri della “community” di GeoPhotoHunt potranno pubblicare le cacce al tesoro da loro create e condividere i punteggi che hanno totalizzato partecipando a una caccia al tesoro. In questo modo quando un utente ha scaricato sul proprio smartphone i dati di una caccia al tesoro potrà iniziare l’avventura anche in assenza di una connessione internet. L’intero studio è stato suddiviso in più fasi, ognuna di queste corrisponde ad una specifica sezione dell’elaborato che segue. In primo luogo si sono effettuate delle ricerche, soprattutto nel web, con lo scopo di individuare altre applicazioni che implementano l’idea della caccia al tesoro su piattaforma mobile o applicazioni che implementassero algoritmi di instance recognition direttamente su smartphone. In secondo luogo si è ricercato in letteratura quali fossero gli algoritmi di riconoscimento di immagini più largamente diffusi e studiati in modo da avere una panoramica dei metodi da testare per poi fare la scelta dell’algoritmo più adatto al caso di studio. Quindi si è proceduto con lo sviluppo dell’applicazione GeoPhotoHunt stessa, sia per quanto riguarda l’app front-end per dispositivi Android sia la parte back-end server. Infine si è passati ad una fase di test di algoritmi di riconoscimento di immagini in modo di avere una sufficiente quantità di dati sperimentali da permettere di effettuare una scelta dell’algoritmo più adatto al caso di studio. Al termine della fase di testing si è deciso di implementare su Android un algoritmo basato sulla distanza tra istogrammi di colore costruiti sulla scala cromatica HSV, questo metodo pur non essendo robusto in presenza di variazioni di luminosità e contrasto, rappresenta un buon compromesso tra prestazioni, complessità computazionale in modo da rendere la user experience quanto più coinvolgente.
Resumo:
I processori multi core stanno cambiando lo sviluppo dei software in tutti i settori dell'informatica poiché offrono prestazioni più elevate con un consumo energetico più basso. Abbiamo quindi la possibilità di una computazione realmente parallela, distribuita tra i diversi core del processore. Uno standard per la programmazione multithreading è sicuramente OpenMP, il quale si propone di fornire direttive semplici e chiare per lo sviluppo di programmi su sistemi a memoria condivisa, fornendo un controllo completo sulla parallelizzazione. Nella fisica moderna spesso vengono utilizzate simulazioni al computer di sistemi con alti livelli di complessità computazionale. Si ottimizzerà un software che utilizza l'algoritmo DMRG (Density Matrix Renormalization Group), un algoritmo che consente di studiare reticoli lineari di sistemi a molti corpi, al fine di renderlo più veloce nei calcoli cercando di sfruttare al meglio i core del processore. Per fare ciò verrà utilizzata l'API OpenMP, che ci permetterà in modo poco invasivo di parallelizzare l'algoritmo rendendo così più veloce l'esecuzione su architetture multi core.
Resumo:
Il mapping di grandezze fisiche risulta estremamente importante, essendo in grado di fornire un adeguato supporto per la localizzazione e il monitoraggio di parametri ambientali sensibili. Nel caso indoor, in assenza di un sistema di localizzazione di riferimento analogo al GPS per il caso outdoor, sfruttando appieno le potenzialità della sensoristica a bordo degli smartphone, si è fatto progressivamente strada il mapping di grandezze fisiche quali, ad esempio, il segnale Wi-Fi e il campo magnetico terrestre. In questo caso il mapping, senza richiedere alcuna infrastruttura e coadiuvato dall'utilizzo di dispositivi portatili largamente diffusi ad uso quotidiano, rappresenta una soluzione relativamente recente ridefinibile come Mobile Crowd Sensing. Il MCS rappresenta un nuovo paradigma di servizio, volto a sfruttare l'interconnettività tra dispositivi portatili per effettuare misurazioni di caratteristiche ambientali in maniera automatizzata, aggregandole in un sistema cloud usufruibile ad una vasta comunità. Tuttavia , il considerevole flusso di dati generato, la variabilità temporale delle grandezze di interesse e il rumore insito nelle misurazioni costituiscono problematiche fondamentali per l'utilizzo e la gestione delle misurazioni effettuate. Per tali motivi l'attività di tesi ha previsto i seguenti obiettivi: (i) fornire una panoramica delle principali tecniche e tecnologie di localizzazione volta a motivare l'importanza del mapping di grandezze fisiche ambientali; (ii) individuazione di grandezze fisiche appetibili per la creazione di mappe affidabili e realizzabili nei contesti applicativi più disparati, sfruttando risorse già presenti nell'ambiente; (iii) sviluppo di un algoritmo statistico in grado di fornire una stima accurata dell'andamento spaziale della grandezza di interesse attraverso un numero limitato di misurazioni, mantenendo la compatibilità con processi MCS e una bassa complessità computazionale. L’algoritmo sviluppato è stato validato attraverso simulazioni e misurazioni svolte in ambienti reali. In particolare, prove sperimentali sono state effettuate nell’arena Vicon nei laboratori DEI dell’Università di Bologna, sede Cesena, concepita dal gruppo di ricerca Casy.
Resumo:
In questa Tesi forniamo una libreria di funzioni aritmetiche che operano in spazio logaritmico rispetto all'input. Partiamo con un'analisi dei campi in cui è necessario o conveniente porre dei limiti, in termini di spazio utilizzato, alla computazione di un determinato software. Vista la larga diffusione del Web, si ha a che fare con collezioni di dati enormi e che magari risiedono su server remoti: c'è quindi la necessità di scrivere programmi che operino su questi dati, pur non potendo questi dati entrare tutti insieme nella memoria di lavoro del programma stesso. In seguito studiamo le nozioni teoriche di Complessità, in particolare quelle legate allo spazio di calcolo, utilizzando un modello alternativo di Macchina di Turing: la Offline Turing Machine. Presentiamo quindi un nuovo “modello” di programmazione: la computazione bidirezionale, che riteniamo essere un buon modo di strutturare la computazione limitata in spazio. Forniamo poi una “guida al programmatore” per un linguaggio di recente introduzione, IntML, che permettere la realizzazione di programmi logspace mantenendo però il tradizionale stile di programmazione funzionale. Infine, per mostrare come IntML permetta concretamente di scrivere programmi limitati in spazio, realizziamo una libreria di funzioni aritmetiche che operano in spazio logaritmico. In particolare, mostriamo funzioni per calcolare divisione intera e resto sui naturali, e funzioni per confrontare, sommare e moltiplicare numeri espressi come parole binarie.
Resumo:
Con questa tesi verrà spiegata l'intrinseca connessione tra la matematica della teoria dei numeri e l'affidabilità e sicurezza dei crittosistemi asimmetrici moderni. I principali argomenti trattati saranno la crittografia a chiave pubblica ed il problema della verifica della primalità. Nei primi capitoli si capirà cosa vuol dire crittografia e qual è la differenza tra asimmetria e simmetria delle chiavi. Successivamente verrà fatta maggiore luce sugli utilizzi della crittografia asimmetrica, mostrando tecniche per: comunicare in modo confidenziale, scambiare in modo sicuro chiavi private su un canale insicuro, firmare messaggi, certificare identità e chiavi pubbliche. La tesi proseguirà con la spiegazione di quale sia la natura dei problemi alla base della sicurezza dei crittosistemi asimmetrici oggigiorno più diffusi, illustrando brevemente le novità introdotte dall'avvento dei calcolatori quantistici e dimostrando l'importanza che riveste in questo contesto il problema della verifica della primalità. Per concludere verrà fatta una panoramica di quali sono i test di primalità più efficienti ed efficaci allo stato dell'arte, presentando una nuova tecnica per migliorare l'affidabilità del test di Fermat mediante un nuovo algoritmo deterministico per fattorizzare gli pseudoprimi di Carmichael, euristicamente in tempo O~( log^3{n}), poi modificato sfruttando alcune proprietà del test di Miller per ottenere un nuovo test di primalità deterministico ed euristico con complessità O~( log^2{n} ) e la cui probabilità di errore tende a 0 con n che tende ad infinito.
Resumo:
Nell'ultimo decennio il trend topic nell'ambito dell'insegnamento dell'informatica è il pensiero computazionale. Concetto già presente, è stato risaltato nel 2006 da Jeannette Wing, che ha mostrato come l'informatica abbia portato alla scienza non solo strumenti (computer e linguaggi di programmazione) ma anche innovazioni nel modo di pensare (es. algoritmo shotgun per sequenziamento del DNA umano). Il pensiero computazionale è il processo mentale coinvolto nel formulare problemi e loro soluzioni, rappresentate in una forma che sia effettivamente eseguibile da un agente che processa informazioni. Si tratta di “pensare come un informatico” quando si affronta un problema. Dopo aver passato in rassegna la letteratura sul pensiero computazionale, viene proposta una definizione del concetto. Si prende atto che la ricerca in questi anni sia rimasta molto legata ai linguaggi di programmazione, concetto centrale dell’Informatica. Vengono allora proposte due strade. La prima strada consiste nella riesumazione di tutta una serie di studi di Psicologia della Programmazione, in particolare: studi sulle misconcezioni, che si occupano di individuare i concetti che sono compresi male dai programmatori novizi, e studi sul commonsense computing, che cercano di capire come persone che non hanno mai ricevuto nozioni di programmazione - o più in generale di informatica – esprimano (in linguaggio naturale) concetti e processi computazionali. A partire da queste scoperte, si forniscono una serie di consigli per insegnare al meglio la programmazione (con i linguaggi attuali, con nuovi linguaggi appositamente progettati, con l'aiuto di strumenti ed ambienti ad-hoc) al più ampio pubblico possibile. La seconda strada invece porta più lontano: riconoscere il pensiero computazionale come quarta abilità di base oltre a leggere, scrivere e calcolare, dandogli dunque grande importanza nell’istruzione. Si vuole renderlo “autonomo” rispetto alla programmazione, fornendo consigli su come insegnarlo senza - ma anche con - l'ausilio di un formalismo.
Resumo:
Dato il recente avvento delle tecnologie NGS, in grado di sequenziare interi genomi umani in tempi e costi ridotti, la capacità di estrarre informazioni dai dati ha un ruolo fondamentale per lo sviluppo della ricerca. Attualmente i problemi computazionali connessi a tali analisi rientrano nel topic dei Big Data, con databases contenenti svariati tipi di dati sperimentali di dimensione sempre più ampia. Questo lavoro di tesi si occupa dell'implementazione e del benchmarking dell'algoritmo QDANet PRO, sviluppato dal gruppo di Biofisica dell'Università di Bologna: il metodo consente l'elaborazione di dati ad alta dimensionalità per l'estrazione di una Signature a bassa dimensionalità di features con un'elevata performance di classificazione, mediante una pipeline d'analisi che comprende algoritmi di dimensionality reduction. Il metodo è generalizzabile anche all'analisi di dati non biologici, ma caratterizzati comunque da un elevato volume e complessità, fattori tipici dei Big Data. L'algoritmo QDANet PRO, valutando la performance di tutte le possibili coppie di features, ne stima il potere discriminante utilizzando un Naive Bayes Quadratic Classifier per poi determinarne il ranking. Una volta selezionata una soglia di performance, viene costruito un network delle features, da cui vengono determinate le componenti connesse. Ogni sottografo viene analizzato separatamente e ridotto mediante metodi basati sulla teoria dei networks fino all'estrapolazione della Signature finale. Il metodo, già precedentemente testato su alcuni datasets disponibili al gruppo di ricerca con riscontri positivi, è stato messo a confronto con i risultati ottenuti su databases omici disponibili in letteratura, i quali costituiscono un riferimento nel settore, e con algoritmi già esistenti che svolgono simili compiti. Per la riduzione dei tempi computazionali l'algoritmo è stato implementato in linguaggio C++ su HPC, con la parallelizzazione mediante librerie OpenMP delle parti più critiche.
Resumo:
Il lavoro di tesi svolto riguarda la progettazione e lo sviluppo di un algoritmo per la pianificazione ottimizzata della distribuzione con viaggi sincronizzati; il metodo sviluppato è un algoritmo mateuristico. I metodi mateuristici nascono dall’integrazione di algoritmi esatti, utilizzati all’interno di un framework metaeuristico, scelto come paradigma di soluzione del problema. La combinazione di componenti esatte e algoritmi metaeuristici ha lo scopo di sfruttare i vantaggi di entrambi gli approcci: grazie all'uso di componenti esatte, è possibile operare in modo efficace e di concentrarsi su alcuni dei vincoli del problema, mentre, con l'utilizzo di un framework metaeuristico, si può efficacemente esplorare grandi aree dello spazio di ricerca in tempi accettabili. Il problema analizzato nel lavoro di tesi è un problema di trasporto, ovvero il Vehicle Routing Problem con finestre temporali e vincoli di sincronizzazione a coppie (VRPTWPS). Il problema richiede di individuare un piano di organizzazione ottimizzato per i viaggi di consegna merci presso un insieme di clienti; ogni cliente richiede che la consegna avvenga all’interno di orari predefiniti; un sottoinsieme di essi richiede, inoltre, che la consegna venga effettuata con la presenza di esattamente due addetti. La presenza di quest’ultimo vincolo richiede, dunque, che due incaricati, indipendentemente dai viaggi di visita che questi effettuano, si incontrino presso uno stesso cliente nello stesso istante. Il vincolo di sincronizzazione rende il problema difficile da risolvere in maniera ottimizzata con i tradizionali metodi di ricerca locale; da ciò nasce l’uso dei metodi mateuristici per la risoluzione ottimizzata del problema. Grazie all’utilizzo di algoritmi esatti, i metodi mateuristici riescono a trattare in maniera più efficace alcuni vincoli dei problemi da risolvere.