LEARNING
Optimization by means of Enumerative Techniques.
L'ottimizzazione per mezzo delle Tecniche Enumerative.
Hashtag keywords: #enumerative #artificialIntelligence #optimization #backtracking #bfs #dfs #dynamicProgramming #divideEtImpera #TILLL #TateoBlog
Summary. The Enumerative Techniques, also called exhaustive, are the techniques that allow to find the exact solution of the problem. We deepen the study by stating the characteristics of the main enumerative techniques, starting from the exhaustive research, continuing with the techniques inspired by "divide et impera" and "Backtracking", with the "greedy" technique, of BFS and DFS research, and of Programming Dynamics..
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.
The Enumerative Techniques, also called exhaustive, are the techniques that allow to find the exact solution of the problem. An elementary example of an enumerative algorithm is the sequential search for an element in a vector. In this elementary case, the search space has linear dimensions with respect to the size of the input data, therefore an acceptable efficiency. However, there are often algorithms for which the size of the search space is large (exponential example) compared to the size of the input data. While as regards the search, the search space is visited up to the searched element and everything is visited only in the worst case, (and searched in the nth position or unsuccessful search) in the case of an optimization problem the space of search must almost always be (see case in which the minimum is searched for in a set M of non-negative integers, in this case the optimal solution is 0 and the visit stops as soon as this value is met) necessarily visited in full. As you can understand, this process is very expensive from the point of view of the calculation. The worst case asymptotic complexity of an enumerative algorithm is obviously related to the size of the search space, which must be entirely visited. We therefore deduce that, although the enumerative techniques allow to determine the solution of a problem in a finite way, often due to the computational complexity they are not effective, in the sense that they do not allow to arrive at the result in an acceptable time.
The algorithm for the Backtracking technique behaves as if a thorough examination of the tree was carried out. In graph theory, Depth-First Search (DFS) is a search algorithm on trees and graphs. The name derives from the fact that in a tree, even before having visited the nodes of the first generations, the algorithm can find itself visiting vertices far from the root, thus going "in depth". Not by chance, if run on a graph, the algorithm identifies a tree that is a sub-graph of it (that is, that contains all the vertices and all and only the arcs that have been followed). We can see the algorithm as a wide visit in which instead of a queue we use a stack (i.e. instead of adding the new items at the bottom we add them to the top).
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
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.
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.
In this article, we looked at artificial intelligence enumeration techniques. But if you want to examine how Artificial Intelligence can be used in general to help humans solve complex problems, then I invite you to continue consulting the Artificial Intelligence thematic area of the Learning section of TILLL by reading the following article which describes how man in the course of history has always had to solve problems, and how such problems, as man has evolved, have gradually become more and more complicated. Complexity has now reached such high levels that help from modern technologies is essential: electronics, information technology and artificial intelligence
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 artificiale
§8 Stay up to date
Rimani aggiornato
If you are interested in the topics covered in the current article and want to be informed about my most recent updates dealing with them, then I invite you to register:
on the Facebook page
"Artificial Intelligence by Tateo's Interdisciplinary Lifelong Learning" (>)
and at the Pinterest dashboard
"Artificial Intelligence by Tateo's Interdisciplinary Lifelong Learning" (>)
which I dedicated specifically for sharing the most recent changes made to the corresponding thematic area of TILLL~Learning (>).
[IT] 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 (>).
I hope you enjoyed this article, belonging to the Learning (>) section of the Tateo's Interdisciplinary Lifelong Learning (TILLL) project (>), and that the notes and observations I gathered within it meets your interests.
If you want stay tuned with the TILLL project evolution, then I invite you to follow the next upgrades that are published on the TILLL's Blog and on the social media pages dedicated to the TILLL community.
[IT] 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
(>) Tateo-Blog, official blog of TILL project
(>) LinkedIn page dedicated to TILL project
(>) Facebook page dedicated to TILL project
(>) Twitter account dedicated to TILL project
(>) Pinterest account dedicated to TILL project
(>) Instagram account dedicated to TILL project
~ o ~
§10. Something about me, the founder and author of Tateo~Blog Project.
Qualcosa su di me, il fondatore e sull'autore del progetto Tateo~Blog.
First of all, thank you for visiting one of the pages of my blog. My name is Giovanni Battista Tateo (shortly Bat) and I am the founder and author of a project of Interdisciplinary Lifelong Learning of which the Tateo~Blog (:::) blog is the means of sharing. I was initially an Information Technology expert, and later I became an electronic engineer, specializing in industrial Automation. I'm passionate about Artificial intelligence, Virtual Reality, Simulation, and I'm an expert in Artificial Vision applied to industrial Automation. Currently, and starting four years ago, I am employed as a Proposal Engineer at Mer Mec S.p.A. (:::) company. Previously, starting in 2004, I was employed, always at the same company, as a Designer of Artificial Vision Systems and Image Processing Algorithms, applied in particular to Railway Diagnostics. I am a supporter and promoter of Lifelong Learning, Social Networking and Knowledge Sharing by means of the web. If you want more details about me, visit the About Me (:::) page.
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 (:::).
References to contact me. Following you can find my personal references that you can use if you want to contact me directly, and the links to my social accounts that you can use to follow me or to keep in touch with me by means of social media networks.
{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)
TILLL~Learning © January 2, 2022
Commenti
Posta un commento