TILLL / 🏠 HOME / 🎓 Learning / 🧠 AI / problemi complessi / enumerative 👈 sei qui
L'ottimizzazione per mezzo delle Tecniche Enumerative
#enumerative #artificialIntelligence #optimization #backtracking #bfs #dfs #dynamicProgramming #divideEtImpera #TILLL #TateoBlog
Le Tecniche Enumerative, dette anche esaustive, sono le tecniche che permettono di trovare la soluzione esatta del problema. Approfondiamo lo studio enunciando le caratteristiche delle principali tecniche enumerative, a partire dalla ricerca esaustiva, continuando con le tecniche ispirate al "divide et impera" ed al "Backtracking", con la tecnica "golosa", della ricerca BFS e DFS, e della Programmazione Dinamica.
§ Ti trovi qui (>>>) all'interno del progetto TILLL
§ Indice dei contenuti
§1. Tecniche enumerative (o ricerca esaustiva)
§2. Lo spazio degli stati e la ricerca delle soluzioni
§4. La tecnica backtracking e la ricerca in profondità (DFS)
§6. La ricerca euristica e la ricerca in efficacia
§7. Branch-and-Bound: una ricerca guidata verso la soluzione ottima
§8. La programmazione dinamica e la ricerca in ampiezza (BFS)
~~~~~~~~~~=======( v. 1 9 / 9 / 2026 )=====~~~~~~~~~~
§1. Tecniche enumerative (o ricerca esaustiva)
Le Tecniche Enumerative, dette anche esaustive, sono le tecniche che permettono di trovare la soluzione esatta del problema. Un esempio elementare di algoritmo enumerativo è la ricerca sequenziale di un elemento in un vettore. In questo caso elementare, lo spazio di ricerca ha dimensioni lineari rispetto alla dimensione dei dati di ingresso quindi un’efficienza accettabile. Esistono però spesso algoritmi per i quali la dimensione dello spazio di ricerca è elevata (esempio esponenziale) rispetto alla dimensione dei dati di ingresso. Mentre per quanto riguarda la ricerca, lo spazio di ricerca viene visitato fino all’elemento cercato e viene visitato tutto solo nel caso peggiore, (e cercato nella n-esima posizione o ricerca con insuccesso) nel caso di un problema di ottimizzazione lo spazio di ricerca deve quasi sempre essere (vedi caso in cui si ricerchi il minimo in un insieme M di interi non negativi, in questo caso la soluzione ottimale è 0 e la visita s’interrompe appena incontrato questo valore) obbligatoriamente visitato per intero. Come si può comprendere questo processo è molto oneroso dal punto di vista del calcolo. La complessità asintotica nel caso peggiore di un algoritmo enumerativo è ovviamente legata alla dimensione dello spazio di ricerca, che deve interamente essere visitato. Deduciamo quindi che, sebbene le tecniche enumerative permettano di determinare in modo finito la soluzione di un problema, spesso a causa della complessità computazionale non sono efficaci, nel senso che non permettono di pervenire al risultato in tempi accettabili.
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§2. Lo spazio degli stati e la ricerca delle soluzioni
#AI #enumerative #euristiche #robotica #DFS #BFS #machineLearning #deepLearning #LLM
Nota storica. La ricerca nello spazio degli stati rappresenta uno dei fondamenti della cosiddetta Intelligenza Artificiale simbolica. Prima dell'avvento del Machine Learning e delle Reti Neurali Profonde (Deep Learning), molti ricercatori ritenevano che il comportamento intelligente potesse essere ottenuto modellando un problema come uno spazio di possibili stati e ricercando sistematicamente il percorso che conduce all'obiettivo. Tecniche come DFS, BFS, Branch-and-Bound e successivamente A* costituiscono ancora oggi il nucleo di molti sistemi di pianificazione e ottimizzazione.
Sebbene oggi l'Intelligenza Artificiale venga spesso associata al Machine Learning, al Deep Learning e ai Large Language Model, molti sistemi intelligenti contemporanei continuano a utilizzare algoritmi di ricerca nello spazio degli stati. La pianificazione di percorsi in robotica, l'ottimizzazione dei tragitti nei navigatori, i motori per giochi strategici e i sistemi di pianificazione automatica utilizzano ancora tecniche evolute derivate da DFS, BFS, Branch-and-Bound e A*.
Per questo motivo gli algoritmi di ricerca non devono essere considerati tecnologie superate, bensì uno dei mattoni fondamentali dell'Intelligenza Artificiale. Sebbene oggi l'attenzione sia spesso rivolta al Machine Learning, al Deep Learning e ai Large Language Model, la ricerca nello spazio degli stati continua ad essere ampiamente utilizzata nella robotica, nei sistemi di navigazione, nella pianificazione automatica, nei videogiochi e nei sistemi di supporto alle decisioni. Le moderne applicazioni di Intelligenza Artificiale combinano spesso tecniche di apprendimento con algoritmi di ricerca, dando origine a sistemi ibridi capaci sia di apprendere dai dati sia di ragionare sulle alternative disponibili.
🔗 Riferimenti per approfondire:
1. 📖 Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson (📚lt.5.3-§3.8); Informatica e Società (IS) / Intelligenza Artificiale / Analisi delle alternative; pag. 10
2. TILLL / 🏠 HOME / 🎓 Learning / 📚 Lettura (LT) / 🧬Saggi / Scienza /⚙️Tecnologia (LT.5.3); Titolo: Le mie letture dedicate alla tecnologia; Link: https://tateoblog.blogspot.com/p/tecnologia-lt53.html; Paragrafo: §3.8. Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson
3. TILLL / 🏠 HOME / 🎓 Learning / 🧠 Intelligenza Artificiale (AI) / 🧠 Problemi complessi (AI.1) / 🧠 Enumerative (AI.1.2); Title: L'ottimizzazione per mezzo delle Tecniche Enumerative; 🔗: https://tateoblog.blogspot.com/p/ai12-la-ottimizzazione-attraverso-le.html.
4. TILLL / 🏠 HOME / 🎓 Learning / 🧠 Intelligenza Artificiale (AI); Titolo: Come delegare alle macchine compiti che gli umani riescono a svolgere grazie alla loro intelligenza; Link: https://tateoblog.blogspot.com/p/artificial-intelligence.html. Paragrafi: §6. Apprendimento Automatico (Machine Learning); §8. Deep Learning (DP), §8.7.1. Large Language Model (LLM).
5. TILLL / 🏠 HOME / 🎓 Learning / 🧠 Intelligenza Artificiale (AI) / 🧠 Problemi complessi (AI.1) / 🧠 Enumerative (AI.1.2) / 🧠Tecniche euristiche (AI.1.3); Titolo: L'approccio Euristico e le tecniche meta-Euristiche per la risoluzione dei problemi complessi; 🔗: https://tateoblog.blogspot.com/p/lapproccio-euristico-e-le-tecniche.html
6. TILLL / 🏠 HOME / 🎓 Learning / 🔧⚙️ Automazione (AU) / 🤖🦾 Robotica (AU.9); Titolo: La robotica; 🔗: https://tateoblog.blogspot.com/p/ua.html.
~~~~~~~~~~=======( v. 2 10 / 9 / 2026 )=====~~~~~~~~~~
§3. Divide et impera
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§4. La tecnica backtracking e la ricerca in profondità (DFS)
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§5. La tecnica golosa (enumerazione implicita)
Le tecniche euristiche e quelle basate sul rilassamento possono contribuire per semplificare il processo enumerativo, in quanto, individuando le aree dello spazio delle soluzioni che non contengono sicuramente la soluzione ottima, permettono all'algoritmo enumerativo di escludere queste aree (dette visitate implicitamente) dalla ricerca sistematica. Con questo artificio gli algoritmi di Enumerazione Implicita riescono spesso a risolvere in tempi accettabili istanze di dimensioni rilevanti. Si osservi che gli algoritmi di Enumerazione Implicita si ispirano perfettamente al principio “divide et impera”, che affronta la soluzione di un problema complesso suddividendolo in un certo numero di sotto-problemi più semplici.In particolare, la tecnica Golosa viene spesso utilizzata per la progettazione di algoritmi per la risoluzione di problemi di ottimizzazione in cui, dato un certo numero di oggetti come input, bisogna scegliere un sottoinsieme di essi che ottimizzi una funzione obiettivo rispettando un certo numero di vincoli. La tecnica golosa effettua la scelta di un elemento alla volta sulla base di qualche criterio di scelta dell’elemento che sembra il più conveniente. Analogamente alla tecnica di Backtracking, la tecnica Golosa esegue il processo di costruzione in stadi. Diversamente dalla tecnica di Backtracking, però, la tecnica Golosa si basa sui seguenti principi:
- Ad ogni stadio i, per la componente i-esima viene scelto il valore che, tra quelli ammissibili, risulta il migliore rispetto ad un determinato criterio; ovviamente, per problemi di ottimizzazione, tale scelta è dipendente dalla funzione obiettivo del problema; la scelta avviene sulla scorta delle informazione disponibili a quello stadio.
- Una volta fatta la scelta per la i-esima componente, si passa a considerare le altre componenti senza più tornare sulla decisione presa
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§6. La ricerca euristica e la ricerca in efficacia
🔗 Riferimenti per approfondire:
1. 📖 Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson (📚lt.5.3-§3.8); Informatica e Società (IS) / Intelligenza Artificiale / Analisi delle alternative; pag. 10
2. TILLL / 🏠 HOME / 🎓 Learning / 📚 Lettura (LT) / 🧬Saggi / Scienza /⚙️Tecnologia (LT.5.3); Titolo: Le mie letture dedicate alla tecnologia; Link: https://tateoblog.blogspot.com/p/tecnologia-lt53.html; Paragrafo: §3.8. Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson
~~~~~~~~~~=======( v. 1 9 / 9 / 2026 )=====~~~~~~~~~~
§7. Branch-and-Bound: una ricerca guidata verso la soluzione ottima
🔗 Riferimenti per approfondire:
1. 📖 Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson (📚lt.5.3-§3.8); Informatica e Società (IS) / Intelligenza Artificiale / Analisi delle alternative; pag. 10
2. TILLL / 🏠 HOME / 🎓 Learning / 📚 Lettura (LT) / 🧬Saggi / Scienza /⚙️Tecnologia (LT.5.3); Titolo: Le mie letture dedicate alla tecnologia; Link: https://tateoblog.blogspot.com/p/tecnologia-lt53.html; Paragrafo: §3.8. Enciclopedia di Elettronica & Informatica (EI) - 9. Aggiornamenti I, Gruppo Editoriale Jackson
~~~~~~~~~~=======( v. 1 9 / 9 / 2026 )=====~~~~~~~~~~
§8. La Programmazione Dinamica e la ricerca in ampiezza (BFS)
La Programmazione Dinamica è una tecnica di realizzazione di algoritmi che risolvono un problema utilizzando le soluzioni di sotto-problemi. La differenza con la tecnica divide et impera è che divide et impera intende preliminarmente individuare solo quei sotto-problemi che sono rilevanti per la risoluzione del problema originario (metodo top-down) mentre la programmazione dinamica parte direttamente da tutti i sotto-problemi più piccoli per poi arrivare alla soluzione del problema originario (metodo bottom-up).Questa tecnica si utilizza quando i sotto-problemi di un dato problema tendono a ripetersi. L'idea di base è quella di calcolare la soluzione a distinti sotto-problemi una volta soltanto, e memorizza tale soluzione in una tabella, in modo tale che esse possa essere usata nel seguito, se occorre.
Nel caso di un problema in cui solo un numero limitato di sotto-problemi è rilevante per determinare la soluzione finale, la tecnica divide et impera risulta più conveniente in quanto l’extra-lavoro per individuare i sotto-problemi è ripagato dal minor numero di sotto-problemi da risolvere. D’altra parte, se tutti o quasi tutti i sotto-problemi devono essere comunque risolti e, addirittura, accade che la soluzione di uno stesso sotto-problema debba essere usata più volte, allora la Programmazione Dinamica risulta essere la tecnica più conveniente poiché essa parte direttamente dalla soluzione di tutti i problemi di dimensione atomica per ricomporre via via le soluzioni di tutti i sotto-problemi di dimensione maggiori, risolvendo ogni sotto-problema solo una volta e conservando la sua soluzione in una tabella.
Tipici problemi che possono essere risolti con questa tecnica sono il calcolo dei numeri di Fibonacci, il calcolo di binomiali, il problema della distanza minima tra tutti i nodi di un grafo.
L’algoritmo per la tecnica della Programmazione Dinamica si comporta come se si effettuasse una visita in profondità dell’albero. Nella teoria dei grafi, la Ricerca in Ampiezza (in inglese Breadth-First Search, BFS) è un algoritmo di ricerca per grafi che partendo da un vertice (o nodo) detto sorgente permette di cercare il cammino fino ad un altro nodo scelto e connesso al nodo sorgente. BFS è un metodo di ricerca non informato, ed ha il suo obiettivo quello di esaminare tutti i nodi del grafo sistematicamente. In altre parole, se il nodo cercato non viene trovato, la ricerca procede in maniera esaustiva su tutti i nodi del grafo.
Per questo motivo gli algoritmi di ricerca non devono essere considerati tecnologie superate, bensì uno dei mattoni fondamentali dell'Intelligenza Artificiale. Sebbene oggi l'attenzione sia spesso rivolta al Machine Learning, al Deep Learning e ai Large Language Model, la ricerca nello spazio degli stati continua ad essere ampiamente utilizzata nella robotica, nei sistemi di navigazione, nella pianificazione automatica, nei videogiochi e nei sistemi di supporto alle decisioni. Le moderne applicazioni di Intelligenza Artificiale combinano spesso tecniche di apprendimento con algoritmi di ricerca, dando origine a sistemi ibridi capaci sia di apprendere dai dati sia di ragionare sulle alternative disponibili.
~~~~~~~~~~=======( v. 2 9 / 9 / 2026 )=====~~~~~~~~~~
§9. Fonti ed approfondimenti
In seguito ho riportato alcuni riferimenti alle fonti che ho consultato durante la redazione di questo articolo e che ti suggerisco di utilizzare per approfondire gli argomenti che ho trattato al suo interno.(1) Algoritmi enumerativi, Università di Pisa
(2) Elementi di programmazione matematica, F. Maffioli, Casa Editrice Ambrosiana, 2000
(3) Modelli e Algoritmi della Ricerca Operativa, A. Sassano, Franco Angeli, 1999.
(4) Integer Programming, L. Wolsey, Wiley-Interscience, 1998
(5) Programming with Constraints: An Introduction, K Marriot, P.J. Stuckey, MIT Press,1998
(6) Tecniche di programmazione, Digilander-Libero
(7) Ricerca in Ampiezza - Breadth-First Search (BFS), Wikipedia
(8) Ricerca in Profondità - Depth-First Search (DFS), Wikipedia
(9) Approccio "Divide et impera" in Informatica, Wikipedia.
(10) Qual è il problema? Metodi, strategie risolutive, algoritmi, Marco Liverani.
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§10. Più in generale
In questo articolo abbiamo esaminato le tecniche enumerative di intelligenza artificiale. Ma se vuoi esaminare come l'Intelligenza Artificiale può essere utilizzata in generale per aiutare l'uomo nella risoluzione dei problemi complessi, allora ti invito a proseguire la consultazione dell'area tematica Intelligenza Artificiale della sezione Learning di TILLL con la lettura dell’articolo seguente che descrive come l’uomo nel corso della storia ha sempre dovuto risolvere problemi, e come tali problemi, man mano che l'uomo si è evoluto, sono diventati via via sempre più complicati. La complessità oggi ha raggiunto livelli così elevati da rendere indispensabile l'aiuto da parte delle moderne tecnologie: elettroniche, informatiche e dell’intelligenza artificialeLa risoluzione dei problemi complessi (AI.1)
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§11. Rimani aggiornato
Se sei interessato agli argomenti trattati nell'articolo corrente e vuoi essere informato sui miei aggiornamenti più recenti che trattano di essi, allora ti invito a registrarti:
alla pagina Facebook
"Artificial Intelligence by Tateo's Interdisciplinary Lifelong Learning" (>)
ed alla bacheca Pinterest
"Artificial Intelligence by Tateo's Interdisciplinary Lifelong Learning" (>)
che ho dedicato appositamente per la condivisione delle modifiche più recenti apportate all'area tematica corrispondente di TILLL~Learning (>).
~~~~~~~~~~=======( v. 1 2 / 1 / 2022 )=====~~~~~~~~~~
§12. Teniamoci in contatto
Spero che questo articolo, appartenente alla sezione Learning (>) del progetto Tateo's Interdisciplinary Lifelong Learning (TILLL) (>), ti sia piaciuto e che le note e le osservazioni che ho raccolto al suo interno soddisfino i tuoi interessi.
Se vuoi rimanere aggiornato sull'evoluzione del progetto TILLL, allora ti invito a seguire i prossimi aggiornamenti che vengono pubblicati sul Blog di TILLL e sulle pagine social dedicate alla community TILLL
§13. Qualche informazione su di me
Innanzitutto ti ringrazio per aver visitato una delle pagine del mio blog. Mi chiamo Giovanni Battista Tateo (brevemente Bat) e sono il fondatore e l'autore di un progetto Lifelong Learning Interdisciplinare di cui il blog Tateo~Blog (:::) ne è il mezzo di condivisione. Sono stato in principio un esperto di Informatica, e in seguito sono diventato un Ingegnere Elettronico, specializzato in Automazione Industriale. Sono un appassionato di Intelligenza Artificiale, Realtà Virtuale, Simulazione, e sono un esperto di Visione Artificiale applicata all'Automazione Industriale. Attualmente, ed a partire dall'anno 2016, sono impiegato come Proposal Engineer presso la società Mer Mec S.p.A. (:::). Precedentemente, a partire dal 2004, sono stato impiegato, sempre presso la stessa società, come Progettista di Sistemi di Visione Artificiale e di Algoritmi di Elaborazione delle Immagini, applicati in particolare alla Diagnostica Ferroviaria. Sono un sostenitore e promotore dell'apprendimento permanente, dei social network e della condivisione delle conoscenze tramite il web. Se vuoi ulteriori dettagli su di me, visita la pagine About Me (:::).
Riferimenti per contattarmi. In seguito puoi trovare i miei riferimenti personali che puoi utilizzare se vuoi contattarmi personalmente, ed i collegamenti ai miei account social che puoi utilizzare per seguirmi e rimanere in contatto con me tramite le reti di social media
Eng. Tateo Giovanni Battista
- e-mail: tateogb@libero.it (send e-mail)
- phone / WhatsApp : (+39) 388 8419726
- Skype (link)
- LinkedIn account (link)
- Facebook account (link)
- Twitter account (link)
- Instagram account (link)
- Pinterest account (link)



Nessun commento:
Posta un commento