Utente:Broccin/proglin
La programmazione lineare (PL oppure LP) è quella branca della ricerca operativa che si occupa di studiare algoritmi di risoluzione per problemi di ottimizzazione lineare.
Si è in presenza di un problema di programmazione lineare quando è possibile tradurre tale problema in un modello matematico costituito da:
- una funzione lineare in n variabili, detta funzione obiettivo, che normalmente esprime un costo (da minimizzare) oppure un ricavo o un guadagno (da massimizzare);
- un sistema di vincoli, detti vincoli tecnologici, espressi da equazioni o disequazioni lineari nelle n variabili;
- un sistema di vincoli di segno che esprimono la non negatività delle variabili, trattandosi queste ultima di grandezze economiche.
La formulazione matematica in forma canonica di un problema generale di programmazione lineare, in cui ad esempio si vuole massimizzare la funzione obiettivo, è la seguente:
dove
- è la funzione obiettivo da massimizzare;
- è il vettore delle variabili decisionali ;
- è il vettore dei termini noti ;
- è il vettore dei coefficienti della funzione obiettivo ;
- è la matrice dei coefficienti dei vincoli, matrice di tipo (m,n).
In generale, un problema di PL potrà presentarsi diversamente dalla forma canonica, tuttavia è sempre possibile ricondursi ad essa.
Esempio
[modifica | modifica wikitesto]Una piccola industria manifatturiera produce due diversi tipi di merci A e B che richiedono entrambe, per la loro produzione, l'uso di due macchinari U e V con una capacità lavorativa complessiva rispettivamente di 15 e 10 ore. La produzione unitaria di A richiede 3 ore di lavoro sul macchinario U e 5 ore di lavoro sul macchinario V, mentre quella di B richiede 5 ore di lavorazione su U e 2 su V. Il profitto dell'industria su ogni unità prodotta e venduta delle merci A e B, che si suppone costante al variare della produzione, è rispettivamente uguale a euro 5 per A e a euro 3 per B.
Quante unità di ciascuna merce si devono produrre per massimizzare il profitto dell'azienda?
Formalizzazione del problema in forma canonica.
Indicando rispettivamente con e il numero di unità delle merci A e B e con il profitto totale dell'industria, il problema di P.L. risulta:
Cenni sulla dualità
[modifica | modifica wikitesto]Una proprietà dei problemi di PL è la possibilità di associare ad ogni problema di PL di massimo, un problema, dedotto da esso, di minimo, che è detto duale del primo problema, e viceversa. Sia dato un problema di PL (detto primale) con la funzione obiettivo da massimizzare in forma canonica
Se il problema primale ha n variabili e m vincoli (oltre ai vincoli di segno), il problema duale ha m variabili e n vincoli. I coefficienti della funzione obiettivo del duale, sono i termini noti b delle disequazioni dei vincoli e i termini noti delle disequazioni dei vincoli del duale, sono i coefficienti c del primale.
La matrice dei coefficienti del duale è la matrice trasposta della matrice dei coefficienti del primale. Nei vincoli i segni di disuguaglianza sono invertiti. Se la funzione obiettivo del primale è da massimizzare, quella del duale è da minimizzare; e viceversa. Il problema duale è, quindi, dato da:
dove
- è la funzione obiettivo del problema duale;
- è il vettore delle variabili decisionali ;
- è il vettore dei termini noti ;
- è il vettore dei coefficienti della funzione obiettivo ;
- è la matrice dei coefficienti dei vincoli, matrice di tipo (n,m).
Storia della programmazione lineare
[modifica | modifica wikitesto]La storia della Programmazione Lineare è interessante e relativamente recente. Essa nasce e si sviluppa durante la seconda guerra mondiale in URSS e in USA dall’esigenza di pianificare spese e ricavi degli eserciti in modo da ridurre i propri costi e nello stesso tempo accrescere le perdite dei nemici.
La programmazione lineare rimane segreta fino al 1947. Dopo la guerra, viene utilizzata in modo massiccio dalle aziende nelle programmazioni giornaliere.
In Unione Sovietica, il padre della programmazione lineare è considerato Leonid V. Kantorovich (1912 - 1996) che, giovane professore a Leningrado, viene contattato nella primavera del 1936 da un'azienda che produce legno compensato e intende rendere più efficiente l'utilizzo dei propri macchinari.
Se in URSS la programmazione lineare si sviluppa in stretto collegamento con la sfera produttiva, negli Stati Uniti la sua nascita è maggiormente legata a ricerche svolte in ambito militare. II nome di riferimento, considerato il vero e proprio fondatore della programmazione lineare, è quello di George Dantzig (1914-2005) che negli anni della guerra collabora con il Pentagono come esperto di metodi di programmazione.
II nome di Dantzig è legato, in particolare, ad un algoritmo risolutivo, il cosiddetto algoritmo del simplesso, da lui ideato nel 1947. Dantzig utilizzò tale metodo anche per un problema originale: assegnare 70 lavori diversi a 70 persone diverse. La potenza richiesta al computer per testare tutte le permutazioni e selezionare il migliore assegnamento era enorme; il numero di possibili configurazioni superava perfino il numero di particelle nell’universo. Ponendo il problema in termini di programmazione lineare e applicando il metodo del simplesso è invece possibile trovare la soluzione ottima riducendo drasticamente il numero di possibili soluzioni di base da esaminare.
Alcuni concetti fondamentali della programmazione lineare possono in realtà essere fatti risalire molto più indietro nel tempo. Fourier nel 1827 aveva studiato come trovare soluzioni ammissibili in un sistema di disuguaglianze lineari; Poisson (1910) presentava un metodo destinato a minimizzare gli errori di osservazione; von Neumann diede contributi in tal senso nella teoria dei giochi e in alcuni modelli economici e ancora Wassily Leontief (1932) che propose una struttura matriciale (Interindustry Input-Output Model) per lo studio dell’economia americana e con tale modello vinse il Premio Nobel per l’economia nel 1976.
Inizialmente i problemi di programmazione lineare erano risolvibili attraverso algoritmi solo in tempi polinomiali come mostrato da Leonid Khachiyan nel 1979, ma un grande supporto teorico e pratico fu dato da Narendra Karmakar nel 1984 con la scoperta di un nuovo metodo: il metodo del punto interno.
Gli algoritmi di calcolo sono di fatto essenziali per risolvere un problema di programmazione lineare non appena il numero delle variabili decisionali (indipendenti) comincia ad aumentare.
Oggi la potenza del calcolo continuamente crescente e il raffinamento degli algoritmi permettono di risolvere problemi con decine di migliaia di vincoli e centinaia di migliaia di variabili.
Metodi risolutivi
[modifica | modifica wikitesto]Dal 1980 ad oggi, c'è stato un notevole sviluppo di software per la risoluzione di problemi di programmazione lineare (ad esempio CPLEX, LINGO, MINOS, ecc.). Ciascun programma utilizza differenti algoritmi (metodo del simplesso, metodo del punto interno, ecc.) ed offre diverse opzioni (analisi di sensibilità, ecc.). A seconda del problema da risolvere, alcuni risolutori possono essere più o meno efficienti degli altri in termini di velocità, precisione, numero di iterazioni ed opzioni disponibili.
Di seguito vengono proposti alcuni dei metodi classici per la risoluzione di un generico problema di PL, metodi che in alcuni casi sono alla base degli algoritmi utilizzati dai risolutori automatici.
Metodo grafico
[modifica | modifica wikitesto]Nel caso in cui il problema di programmazione lineare sia costituito solamente da due variabili decisionali ( x e y ), esso può essere risolto per via grafica.
Sia dato, ad esempio, un generico problema di massimizzazione lineare in due variabili
con z, funzione obiettivo, soggetta al sistema di vincoli lineari
La soluzione del sistema di disequazioni lineari è detta area ammissibile o regione delle soluzioni ammissibili.
Ogni disequazione del sistema è soddisfatta dai punti di un semipiano, perciò il sistema è soddisfatto dall'intersezione dei relativi semipiani. Se l'intersezione non è vuota, la soluzione del sistema può essere un poligono convesso, eventualmente riducibile ad un segmento o ad un punto, oppure una regione piana illimitata convessa, detta troncone, avente per frontiera una linea spezzata aperta.
Esclusi i casi nei quali la soluzione dei vincoli sia l'insieme vuoto o un punto, casi nei quali non si può parlare di massimi e di minimi, dobbiamo limitarci a considerare la ricerca dei massimi della funzione quando la soluzione del sistema è rappresentata dai punti di un troncone o di un poligono, eventualmente degenere in un segmento.
In questi casi si dimostra che se la regione ammissibile è un poligono, esistono (per il Teorema di Weierstrass) sia il massimo che il minimo assoluto della funzione, i quali non possono essere punti interni al poligono poiché la funzione non ha massimi o minimi liberi, ma sono sulla frontiera. La frontiera è costituita da segmenti e si può dimostrare che il massimo e il minimo di una funzione su un segmento si trovano agli estremi del segmento e dunque nei vertici del poligono.
Si può inoltre dimostrare che se, in due vertici consecutivi, la funzione assume lo stesso valore massimo ( o minimo), allora essa è costante su tutto il lato e pertanto ha infiniti massimi ( o minimi) corrispondenti agli infiniti punti del lato.
Concludendo:
per determinare i massimi (o i minimi) di una funzione lineare, con dominio dei vincoli un poligono, è sufficiente calcolare il valore della funzione nei vertici del poligono. Il massimo ( o il minimo) di questi valori è il massimo assoluto (o minimo assoluto).
Se il dominio dei vincoli è una regione illimitata a frontiera poligonale, la ricerca dei massimi della funzione, per quanto detto, si effettua esaminando la frontiera che è costituita da segmenti e da semirette. In questo caso il massimo, se esiste, si trova su un vertice, ma può capitare che sulle semirette che definiscono la frontiera la funzione assuma valori maggiori di un qualsiasi numero reale e dunque tenda all'infinito. In questo caso il problema di massimo non ammette soluzione.
Alla luce di quanto detto fino ad ora, per risolvere praticamente un problema di PL in due variabili, nel caso in cui la regione ammissibile sia un poligono o un troncone, si possono utilizzare le linee di livello della funzione obiettivo. Il procedimento da seguire è il seguente:
- rappresentare sul piano cartesiano la regione ammissibile.
- Rappresentare la funzione obiettivo z considerandola come equazione parametrica proprio nel valore di z. Al variare del parametro z, si otterrà un fascio di rette, le linee di livello, tutte col medesimo coefficiente angolare, quindi fra loro parallele.
- Si segua nel fascio la direzione di z crescente o decrescente a seconda se il problema postoci sia rispettivamente di ricerca di massimo o di minimo. Tra tutte le rette parametriche in z verrà scelta quella che ha ancora almeno un punto in comune con la regione ammissibile. Le coordinate di tale punto d'intersezione tra retta e dominio massimizzano (minimizzano) la funzione obiettivo e, quindi, rappresentano la soluzione del nostro problema.
Ovviamente l'esistenza e l'unicità della soluzione di un problema di PL non è dimostrabile a priori, ma dipende dalla forma della regione ammissibile e dall'equazione della funzione obiettivo. In particolare può accadere che un problema di PL non ammetta soluzioni o ne ammetta infinite. Di seguito sono riportate graficamente queste situazioni limite.
Da quanto detto sopra il metodo grafico si può utilizzare se la funzione obiettivo è a due variabili indipendenti, ma possiamo usare tale metodo anche se la funzione è a tre variabili e nei vincoli vi è una equazione. Infatti da tale equazione possiamo calcolare il valore di una variabile rispetto alle altre e quindi, sostituendo tale valore nella funzione obiettivo e negli altri vincoli disequazionali, ritroveremo una funzione a due variabili con vincoli a due variabili risolvibile per via grafica.
In generale quindi si può utilizzare il metodo grafico ogniqualvolta la funzione obiettivo è ad n variabili e vi sono m equazioni vincolari con n-m=2.
Esempio
[modifica | modifica wikitesto]Supponiamo di voler risolvere col metodo grafico il problema di programmazione lineare presentato come esempio all'inizio di questa pagina. La formulazione, in forma canonica, di tale problema è la seguente:
Per risolverlo graficamente, determiniamo innanzitutto sul piano cartesiano la regione ammissibile. Tracciando dapprima le rette origine dei semipiani e, intersecando successivamente tali semipiani, otteniamo che l'area ammissibile è costituita dal poligono convesso di vertici OABC dove:
- (vedi figura a fianco)
A questo punto, tracciamo la linea di livello z=0 ed il vettore v indicativo dell'andamento di crescita delle linee di livello. La retta, indicata in figura con z max, rappresenta la linea di livello che ha intersezione non nulla con la regione ammissibile e in cui z assume valore massimo. Il punto di intersezione tra la retta z max e la regione ammissibile è, per quanto detto in precedenza, la soluzione del problema di PL.
Infatti, se andiamo a valutare la funzione obiettivo sui vertici del poligono convesso OABC, punti in cui per quanto detto teoricamente deve trovarsi, se esiste, il massimo, otteniamo:
Dunque B(1.05,2.37) è effettivamente il massimo cercato.
Metodo algebrico
[modifica | modifica wikitesto]L'utilizzo di strumenti geometrici per risolvere un generico problema di PL fornisce un metodo risolutivo efficace solo in presenza di due variabili decisionali o nel caso molto particolare in cui vi siano n-2 vincoli di uguaglianza in un problema di PL a n variabili decisionali. Per elaborare una procedura generale occorre ricorrere agli strumenti dell'algebra lineare.
Consideriamo un generico problema di massimizzazione lineare in forma canonica
e lo riformuliamo in forma normale:
dove , , , matrice di tipo (m, m+n).
Il passaggio alla forma normale avviene formalmente definendo i seguenti vettori e matrici per accostamento:
, , ,
dove I è la matrice identità di ordine m.
L'idea che soggiace alla formulazione della forma standard è quella di voler esprimere tutti i vincoli sotto forma di uguaglianze; per questo motivo vengono aggiunte m ulteriori variabili non negative date dal vettore , tante quanti sono i vincoli del problema.
A queste nuove variabili viene dato il nome di variabili slack (o di scarto).
In analogia al problema di PL in due variabili, si dovrà determinare il dominio dei vincoli, anzi basterà determinare le coordinate dei vertici dell'iperpoliedro nello spazio a n+m dimensioni, in quanto si può dimostrare che i massimi ed i minimi della funzione obiettivo, se il problema di PL ammette soluzione, si trovano sui vertici dell'iperpoliedro.
La determinazione dei vertici dell'iperpoliedro dipende dalla risoluzione del sistema dei vincoli:
;
Se le equazioni sono linearmente indipendenti, il sistema ammette soluzioni, poiché si possono esprimere m incognite in funzione delle altre n.
Fra queste soluzioni hanno importanza quelle che si ottengono assegnando valore zero ad n incognite e ricavando le altre m.
Si definisce soluzione di base una soluzione del sistema dei vincoli che abbia n incognite nulle.
Le soluzioni di base sono tante quante le combinazioni di n+m elementi di classe n.
Fra le soluzioni di base quelle che soddisfano anche ai vincoli di non negatività sono dette soluzioni ammissibili di base (che si rappresentano nei vertici dell'iperpoliedro).
Si può dimostrare che, se la funzione obiettivo ha un massimo, allora almeno una soluzione ottima (ossia una soluzione che rende massima la funzione) è una soluzione ammissibile di base.
Il problema è allora quello di cercare questa soluzione ammissibile di base.
Il metodo algebrico trova tutte le soluzioni di base, sceglie fra di esse quelle ammissibili, calcola i corrispondenti valori della funzione e trova la soluzione ammissibile di base che fornisce il valore massimo.
Per applicare il metodo algebrico bisogna dunque innanzitutto risolvere tutti gli sistemi ottenuti annullando alternativamente n variabili. In pratica però questo metodo non è applicato a causa del numero notevole di sistemi da risolvere.
Esempio
[modifica | modifica wikitesto]Supponiamo di voler risolvere col metodo algebrico il seguente problema di programmazione lineare a tre variabili decisionali, non risolvibile graficamente:
Introducendo le variabili di scarto e i vincoli del sistema divengono:
Annullando alternativamente tre delle cinque variabili e risolvendo i 10 sistemi risultati, si ottengono le seguenti soluzioni di base:
Di queste, sono soluzioni ammissibili di base solo in quanto le altre non soddidfano i vincoli di non negativita'.
Fra queste soluzioni ammissibili di base si cerca la soluzione ottima andando a calcolare il valore della funzione obiettivo in corrispondenza di tali punti:
Quindi l'ottimo si ha in corrispondenza del punto , ossia per:
Metodo del simplesso
[modifica | modifica wikitesto]Il metodo del simplesso, dovuto al matematico George Dantzig, è un algoritmo che permette, attraverso un numero finito di iterazioni, di passare da una soluzione ammissibile di base alla soluzione ottima (naturalmente se il problema ammette soluzione, ossia se i vincoli sono compatibili e quindi l'insieme delle soluzioni ammissibili non è vuoto).
Il procedimento è formato dai seguenti passi:
- si determina una soluzione ammissibile di base e si calcola il corrispondente valore di z;
- si passa da questa prima soluzione ad una seconda soluzione ammissibile di base che migliori il valore di z, modificando i valori delle incognite della prima soluzione in modo che una variabile, che prima era nulla, ora assuma un valore positivo e in modo che una variabile che prima risultava positiva ora diventi nulla;
- si procede successivamente finché si arriva, se possibile, alla soluzione ottima.
Si osservi che se il sistema dei vincoli è nella forma . allora una prima soluzione ammissibile di base si trova annullando le variabili del problema e ricavando i valori delle variabili di scarto.
Il procedimento descritto si può rendere automatico mediante la risoluzione dei sistemi con l'algoritmo del simplesso basato sulla trasformazione dei sistemi in altri equivalenti ottenuti combinando linearmente le varie equazioni.
Utilizzi della programmazione lineare
[modifica | modifica wikitesto]La programmazione lineare è molto importante nella risoluzione di problemi di ottimizzazione: molti problemi pratici di ricerca operativa possono essere espressi come problemi di programmazione lineare e in alcuni casi la programmazione lineare è stata proprio punto di partenza per la ricerca e scoperta di nuovi strumenti, poi utilizzati in altri ambiti. Ad esempio lo studio di problemi di flusso di costo minimo e problemi di flusso multicommodity di costo minimo ha richiesto l'implementazione di algoritmi specializzati, sfruttati poi per risolvere anche altri problemi di ottimizzazione.
Storicamente le idee della programmazione lineare hanno ispirato molti dei concetti centrali della teoria dell’ottimizzazione, come la dualità, la scomposizione e l’importanza della convessità e delle sue generalizzazioni.
La programmazione lineare viene utilizzata in modo massiccio anche in microeconomia e nel menagement delle società, nelle progettazioni, produzioni, trasporto, tecnologie. Sebbene gli obiettivi del moderno menagement siano in continua evoluzione, molte compagnie desiderano massimizzare i loro profitti o minimizzare i costi limitando le risorse e possono farlo attraverso problemi di programmazione lineare.
Tipici problemi di programmazione lineare sono ad esempio
- modelli di allocazione ottima di risorse: disponendo di determinate risorse (macchinari, materie prime, mano d’opera, energia, etc.), si deve pianificare la produzione di un certo numero di prodotti finiti, cercando di massimizzare il profitto ricavato dalla loro vendita. Tra questi problemi rientra il famoso problema dello zaino.
- modelli di miscelazione: si hanno a disposizione un certo numero di sostanze ciascuna delle quali ha un certo costo ed un determinato contenuto di componenti utili. Si vuole ottenere la miscela più economica di queste sostanze in modo che contenga una certa quantità di ciascuno dei componenti utili
- modelli di trasporto: si hanno un certo numero di località (origini) ciascuna delle quali ha una quantità fissata di merce disponibile e un certo numero di clienti residenti in altre località (destinazioni)i quali richiedono quantitativi precisi di merce. Conoscendo il costo unitario del trasporto della merce da ciascuna località origine a ciascuna località destinazione è necessario pianificare i trasporti, cioè la quantità di merce che deve essere trasportata da ciascuna località origine a ciascuna località destinazione in modo da soddisfare l’ordine dei clienti minimizzando il costo complessivo derivante dai trasporti. (vedere il problema del commesso viaggiatore)
Algoritmi
[modifica | modifica wikitesto]Per la risoluzione a livello computazionale dei problemi di programmazione lineare si utilizzano diversi tipi di algoritmi, il più famoso tra i quali è sicuramente il già citato algoritmo del simplesso, sviluppato da George Dantzig il quale risulta abbastanza efficiente a livello pratico e garantisce di trovare l’ottimo globale. Esso ha però un comportamento poco soddisfacente in alcuni casi: esistono problemi di programmazione lineare per i quali il metodo del simplesso utilizza un numero di passi esponenziale per arrivare alla soluzione.
Fino agli studi di Leonid Khachiyan del 1979 non era noto sapere a priori se qualsiasi problema di programmazione lineare fosse risolvibile in tempo polinomiale (classe di complessità dell’algoritmo: P ).
Con il metodo dell'ellissoide Khachiyan creò il primo algoritmo a tempo polinomiale anche per i casi peggiori della programmazione lineare. Per risolvere un problema con n variabili che può essere codificato attraverso L bits in input, il metodo dell'ellissoide utilizza O(n^4L) operazioni aritmetiche sui numeri con O(L) cifre.
Consiste in una specializzazione della tecnica di ottimizzazione non lineare sviluppata da Naum Z. Shor che generalizza il metodo dell’ellissoide per ottimizzazione convessa proposta da Arkadi Nemirovski, vincitore del John von Neumann Theory Prize e D. Yudin.
L’algoritmo di Khachiyan ebbe di per sè un impatto pratico irrilevante, ma come nel caso dell'algoritmo del simplesso diede origine ad una serie di famiglie di programmi lineari. Inoltre ispirò nuove linee di ricerca nella programmazione lineare: ne è un esempio il metodo del punto interno proposto da N. Karmarkar nel 1984. In contrasto con l’algoritmo del simplesso che trova la soluzione ottima procedendo lungo i punti limite di un iperpoliedro, il metodo del punto interno si muove all’interno della regione di ammissibilità. Esso inoltre migliora il limite polinomiale teorico dei casi peggiori di Khachiyan.
Problemi aperti e ultime scoperte
[modifica | modifica wikitesto]Vi sono diversi problemi aperti nella teoria della programmazione lineare, la soluzione dei quali rappresenterebbe una fondamentale conquista in matematica e porterebbe potenzialmente ad ulterori migliorie nella capacità di risolvere programmi lineari su larga scala.
Alcune domande irrisolte sono:
- La programmazione lineare ammette un algoritmo con tempo fortemente polinomiale?
- La programmazione lineare ammette un algoritmo con tempo fortemente polinomiale che trovi una soluzione strettamente complementare?
- La programmazione lineare ammette un algoritmo polinomiale nel modello computazionale dei numeri reali?
Queste domande così strettamente collegate fra loro sono state citate da Stephen Smale tra i 18 più grandi problemi irrisolti del XXIesimo secolo.
Esistono algoritmi che risolvono problemi di programmazione lineare in tempo debolmente polinomiale, come il metodo dell'ellissoide e il metodo del punto interno, ma non è stato trovato ancora alcun algoritmo che permetta performance con tempi fortemente polinomiali sia nel numero di vincoli che nel numero di variabili.
Ulteriori problemi sono:
- Esistono regole pivotali che portano a variazioni del tempo polinomiale dell' algoritmo del Simplesso?
- Tutti i grafi iperpoliedrali hanno diametro polinomialmente limitato, dove per diamtero si intende la più grande distanza tra due qualsiasi vertici dell'iperpoliedro?
- La congettura di Hirsch è vera per grafi iperpoliedrali?
Tali domande sono strettamente collegate alla performance e allo sviluppo di metodi simili a quello del simplesso. Esso ha grande efficienza pratica nonostante il suo tempo di esecuzione possa essere nei casi peggiori esponenziale, per questo si ricercano variazioni del metodo che portino a tempi fortemente polinomiali. Sarebbe di grande significato pratico e teorico scoprire l'esistenza di tali variazioni.
L’algoritmo del Simplesso e le sue variazioni fanno parte della famiglia degli algoritmi edge-following, chiamati così perché risolvono problemi di programmazione lineare muovendosi da vertice a vertice lungo gli spigoli di un iperpoliedro. Questo significa che la loro performance teorica è limitata dal massimo numero di spigoli costruibili tra 2 vertici dell'iperpoliedro.
Per questo motivo un ulteriore problema irrisolto consiste nel sapere se un grafo iperpoliedrale rappresentate la regione di ammissibilità di un problema di programmazione lineare ammette diametro polinomialmente limitato. E’ stato provato che tutti gli iperpoliedri hanno diametro subesponenziale e si può osservare sperimentalmente che gli iperpoliedri hanno diametro lineare. Tuttavia finora non è noto se ogni iperpoliedro abbia diametro superpolinomiale o perfino superlineare. Se esistesse un iperpoliedro con tali proprietà, allora nessuna variante edge-following potrebbe avere un tempo d'esecuzione polinomiale o lineare rispettivamente. Lo studio dei diametri degli iperpoliedri è di interesse prettamente matematico.
Bibliografia
[modifica | modifica wikitesto]- Frederick S. Hillier, Gerald J. Lieberman, Introduzione alla ricerca operativa, FrancoAngeli, 1989.
- Gambotto Manzone, Matematica per ragionieri programmatori, Tramontana, 1989.
- Massimo Bergamini, Gianni Roversi, Anna Trifone, Fondamenti di ricerca operativa e programmazione lineare, Zanichelli, 2001.
- Silvana Stefani, Giovanni Zambruno, Anna Torriero, Elementi di Matematica Finanziaria e cenni di Programmazione Lineare, Giappichelli Editore, 2003.
Voci correlate
[modifica | modifica wikitesto]- Elenco di algoritmi di ottimizzazione
- Ricerca operativa
- Algoritmo del simplesso
- Branch and bound
- Branch and cut
- Programmazione non lineare
- Programmazione quadratica
- Programmazione stocastica
- Problema dello zaino
- Problema del commesso viaggiatore
- Programmazione lineare intera
[[Categoria:Ricerca operativa]]