1
Fork 0
mirror of https://github.com/Steffo99/unisteffo.git synced 2024-11-23 00:14:21 +00:00
triennale-appunti-steffo/docs/route-AlgoritmiEStruttureDati.chunk.0aeb3.esm.js

79 lines
132 KiB
JavaScript
Raw Normal View History

2020-06-11 16:35:47 +00:00
(window.webpackJsonp=window.webpackJsonp||[]).push([[3],{JESo:function(n){n.exports={inline:"inline__1yl8V",block:"block__fPiiB"}},PGF6:function(n,e,i){"use strict";var o=i("hosL");e.a=Object(o.createContext)(null)},Q7TX:function(n,e,i){"use strict";(function(n){i.d(e,"a",(function(){return d}));var o=i("JESo"),a=i.n(o),t=i("QRet"),r=i("8CDw"),l=i("wQ73"),s=i("PGF6");const d=Object.freeze({INLINE:a.a.inline,BLOCK:a.a.block});e.b=function(e){let i,o,u=Object(t.b)(r.a),c=Object(t.b)(l.a),m=Object(t.b)(s.a);return i=void 0===e.inline?c:e.inline,o=void 0===e.display?null===m?d.INLINE:m:e.display,n("img",i?{src:`https://latex.codecogs.com/svg.latex?\\inline {\\color{${u}} ${e.children} }`,alt:e.children,title:e.children,class:a.a.latex+" "+o}:{src:`https://latex.codecogs.com/svg.latex?{\\color{${u}} ${e.children} }`,alt:e.children,title:e.children,class:a.a.latex+" "+o})}}).call(this,i("hosL").h)},QRet:function(n,e,i){"use strict";function o(n,e){y.options.__h&&y.options.__h(z,n,O||e),O=0;var i=z.__H||(z.__H={__:[],__h:[]});return n>=i.__.length&&i.__.push({}),i.__[n]}function a(n){return O=1,t(h,n)}function t(n,e,i){var a=o(b++,2);return a.t=n,a.__c||(a.__c=z,a.__=[i?i(e):h(void 0,e),function(n){var e=a.t(a.__[0],n);a.__[0]!==e&&(a.__[0]=e,a.__c.setState({}))}]),a.__}function r(n,e){var i=o(b++,3);!y.options.__s&&v(i.__H,e)&&(i.__=n,i.__H=e,z.__H.__h.push(i))}function l(n,e){var i=o(b++,4);!y.options.__s&&v(i.__H,e)&&(i.__=n,i.__H=e,z.__h.push(i))}function s(n){return O=5,u((function(){return{current:n}}),[])}function d(n,e,i){O=6,l((function(){"function"==typeof n?n(e()):n&&(n.current=e())}),null==i?i:i.concat(n))}function u(n,e){var i=o(b++,7);return v(i.__H,e)?(i.__H=e,i.__h=n,i.__=n()):i.__}function c(n,e){return O=8,u((function(){return n}),e)}function m(n){var e=z.context[n.__c],i=o(b++,9);return i.__c=n,e?(null==i.__&&(i.__=!0,e.sub(z)),e.props.value):n.__}function p(n,e){y.options.useDebugValue&&y.options.useDebugValue(e?e(n):n)}function g(){C.some((function(n){if(n.__P)try{n.__H.__h.forEach(_),n.__H.__h.forEach(f),n.__H.__h=[]}catch(e){return n.__H.__h=[],y.options.__e(e,n.__v),!0}})),C=[]}function _(n){"function"==typeof n.u&&n.u()}function f(n){n.u=n.__()}function v(n,e){return!n||e.some((function(e,i){return e!==n[i]}))}function h(n,e){return"function"==typeof e?e(n):e}i.d(e,"j",(function(){return a})),i.d(e,"h",(function(){return t})),i.d(e,"d",(function(){return r})),i.d(e,"f",(function(){return l})),i.d(e,"i",(function(){return s})),i.d(e,"e",(function(){return d})),i.d(e,"g",(function(){return u})),i.d(e,"a",(function(){return c})),i.d(e,"b",(function(){return m})),i.d(e,"c",(function(){return p}));var b,z,q,y=i("hosL"),O=0,C=[],P=y.options.__r,I=y.options.diffed,k=y.options.__c,S=y.options.unmount;y.options.__r=function(n){P&&P(n),b=0;var e=(z=n.__c).__H;e&&(e.__h.forEach(_),e.__h.forEach(f),e.__h=[])},y.options.diffed=function(n){I&&I(n);var e=n.__c;e&&e.__H&&e.__H.__h.length&&(1!==C.push(e)&&q===y.options.requestAnimationFrame||((q=y.options.requestAnimationFrame)||function(n){var e,i=function(){clearTimeout(o),cancelAnimationFrame(e),setTimeout(n)},o=setTimeout(i,100);"undefined"!=typeof window&&(e=requestAnimationFrame(i))})(g))},y.options.__c=function(n,e){e.some((function(n){try{n.__h.forEach(_),n.__h=n.__h.filter((function(n){return!n.__||f(n)}))}catch(i){e.some((function(n){n.__h&&(n.__h=[])})),e=[],y.options.__e(i,n.__v)}})),k&&k(n,e)},y.options.unmount=function(n){S&&S(n);var e=n.__c;if(e&&e.__H)try{e.__H.__.forEach(_)}catch(n){y.options.__e(n,e.__v)}}},"ox/y":function(n,e,i){"use strict";function o(n,e){if(!n)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?n:e}Object.defineProperty(e,"__esModule",{value:!0}),e.Link=e.Match=void 0;var a=Object.assign||function(n){for(var e=1;e<arguments.length;e++){var i=arguments[e];for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&(n[o]=i[o])}return n},t=i("hosL"),r=i("Y3FI"),l=e.Match=function(n){function e(){for(var e,i,a=arguments.length,t=Array(a),r=0;r<a;r++)t[r
# Algoritmi e Strutture Dati
Docente: [**Manuela Montangero**](mailto:manuela.montangero@unimore.it)
Crediti: **9 CFU** (72 ore di lezione)
Orario di ricevimento: **Giovedì dalle 14:30 alle 16:30**
_Mandare una mail prima, altrimenti potrebbe andarsene_
#### Regole particolari per le email
- Oggetto "ASD"
- Mail **firmata** con **nome e cognome**
- Mail spedita dall'**account Unimore**
### Materiale
Libri:
- **Introduzione agli Algoritmi e Strutture Dati** di _T.H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein_
**[Dolly (FIM)](https://dolly.fim.unimore.it/2018/course/view.php?id=26)**
### Tutorato
Tutor: [**Gianluca d'Addese**](mailto:tutoratoalgoritmi@gmail.com)
Cosa: **Esercizi sugli argomenti visti a lezione** e **preparatori all'esame**
Quando: **Mercoledì dalle 09:00 alle 11:00**...?
### Esame
Per iscriversi all'esame, bisogna aver passato:
- Analisi matematica (propedeutica)
- Programmazione I
Formato:
- Prima prova scritta
- Risolvere problemi con algoritmi proposti a lezione
- E' un test sulla preparazione
- Dura 1h30m
- Non si può usare nessun tipo di materiale
- Seconda prova scritta
- Proponi soluzioni per nuovi problemi non studiati a lezione
- Domande teoriche sugli argomenti studiati
- Dura 2h
- E' il giorno dopo la prima prova
- Si può utilizzare qualsiasi materiale, ma non deve permettere di comunicare
- Orale facoltativo
- Solo per chi supera entrambi gli scritti
- Domande su quello che abbiamo visto a lezione ("perchè gli algoritmi funzionano?")
- Informare via email entro 3 giorni dalla pubblicazione degli esiti della seconda prova
- L'orale potrebbe migliorare o peggiorare il voto (anche "molto")
**Attenzione:** Vengono verbalizzati anche i voti insufficienti; ricordarsi di rifiutarli!
Ci sono i seguenti appelli:
- 3 appelli tra Giugno e Luglio
- 1 appello a Settembre
- 2 appelli a Gennaio e Febbraio
Vale il salto di appello se:
- Uno studente regolarmente iscritto **non si presenta** all'appello e non ha avvisato via email almeno il giorno prima.
- Uno studente ha riportato una **grave insufficienza** in uno dei due scritti, e l'appello successivo è nella stessa sessione
### Note
Il corso è ben collegato con quello di Programmazione 2.
Dormire non fa bene!
`)))),n(a.a,null,n(o.a,null,"\n # Il nome del corso\n\n ## Cosa sono gli algoritmi?\n\n Gli algoritmi sono modi sistematici per risolvere problemi.\n\n Sono fondamentali per sviluppare software, in quanto i computer sono eccellenti esecutori di algoritmi.\n\n ## Come si sviluppa un algoritmo?\n\n Innanzitutto, bisogna conoscere gli _input_ e gli _output_ del problema, rispettivamente i dati di partenza e i dati di arrivo di esso; si ha quindi una fase di **ricerca**.\n\n Poi, si deve trovare un procedimento che ci faccia risolvere il nostro problema: è quello che faremo in questa materia!\n\n Infine, bisogna scrivere la soluzione in un modo che possa essere eseguita da un computer: questa è la **programmazione**.\n\n ## Che tipo di problemi possiamo risolvere?\n\n Un algoritmo risolve problemi di tipo generale, non ci interessa sapere _il risultato di 123+456_, ma vogliamo sapere _il risultato di x+y_, dove x e y sono due numeri naturali qualsiasi.\n\n Un problema può essere quindi considerato circa come una **funzione matematica**, che connette ogni input a un output corrispondente.\n\n ## Che caratteristiche ha un algoritmo?\n\n Per prima cosa, ripetendo l'algoritmo più volte con lo stesso ingresso deve dare sempre la stessa uscita come **risultato**, finendo in un **tempo finito**.\n\n Deve essere **ben ordinato**: cambiando l'ordine in cui vengono effettuate le operazioni, è probabile che anche il risultato cambi!\n\n Le sue istruzioni devono essere **non ambigue**, cioè che non possano essere interpretate in più modi, e **effettivamente realizzabili**, cioè realizzabili con l'esecutore che vogliamo usare per eseguire l'algoritmo.\n\n ## Esistono algoritmi equivalenti?\n\n **Sì!** Possono esserci due algoritmi che dati gli stessi input, hanno gli stessi output, e quindi risolvono lo stesso problema.\n\n In compenso, possono avere un numero di operazioni diverse, e quindi essere **uno più veloce** (da eseguire) dell'altro.\n\n ## Come si verifica la correttezza di un algoritmo?\n\n L'algoritmo deve essere **valido per tutti gli input**, anche se questi sono infiniti.\n\n Possiamo effettuare prove matematiche per verificarne la correttezza; il **principio di induzione** è dunque una dei teoremi fondamentali dell'algoritmica.\n\n Possiamo però verificare la _non correttezza_ di un algoritmo trovando un singolo controesempio.\n ")),n(a.a,null,n(o.a,null,"\n # Efficienza degli algoritmi\n \n Un buon algoritmo deve essere **efficiente**, ovvero deve usare il minimo delle risorse necessarie, come _usare il minimo di tempo possibile_.\n \n ## Come misuriamo il tempo necessario?\n \n Cerchiamo di astrarre il tempo dal particolare esecutore, e andiamo a contare il numero di operazioni elementari richieste per eseguire il nostro algoritmo nel caso peggiore.\n \n Un algoritmo efficiente, infatti, all'aumentare dei dati in ingresso, diventerà sempre più veloce rispetto a uno non efficiente, anche su computer più lenti!\n \n > Il [Bubble Sort](https://en.wikipedia.org/wiki/Bubble_sort) è sempre più lento di un [Tree Sort](https://en.wikipedia.org/wiki/Tree_sort), anche su computer più lenti, perchè, dovendo ordinare liste sempre più lunghe, prima o poi si raggiunge un punto in cui il primo è più veloce (in termini di tempo) dell'altro.\n \n Dobbiamo andare a vedere, quindi, _il numero di operazioni richieste per ottenere il r
//# sourceMappingURL=route-AlgoritmiEStruttureDati.chunk.0aeb3.esm.js.map