Eirik Benum Reksten Hans Olav Norheim. (ja, det kommer nok litt matte nå ja)

Like dokumenter
ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Algdat - Øvingsforelesning. Maks flyt

LP. Leksjon 7. Kapittel 13: Nettverk strøm problemer

Dijkstras algoritme Spørsmål

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

SIF8010 ALGORITMER OG DATASTRUKTURER

ALGORITMER OG DATASTRUKTURER

Eksamen MAT1005 Matematikk 2P-Y Høsten 2013

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Teoriøving 7 + litt om Ford-Fulkerson. Magnus Lie Hetland

Rundt og rundt og. Trettende forelesning

3x + 2y 8, 2x + 4y 8.

Eksamen i tdt4120 Algoritmer og datastrukturer

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Avanserte flytalgoritmer

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

ECON2200: Oppgaver til for plenumsregninger

DEL1 Uten hjelpemidler

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Løsningsforslag for eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

Utforsking av funksjonsuttrykk og de tilhørende grafene ved hjelp av GeoGebra

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Korteste Vei I. Lars Vidar Magnusson Kapittel 24 Hvordan finne korteste vei Egenskaper ved korteste vei

Alle mot alle. Åttende forelesning. (eller eller Bellman-Ford, eller BFS, alt ettersom) fra alle noder.

Løsningsforslag for eksamen i fag TDT4120 Algoritmer og datastrukturer Tirsdag 9. desember 2003, kl

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

KORTESTE STI. Vektede Grafer. Korteste Sti. Dijkstra s Algoritme. Vektet Urettet Graf

Eksamensoppgave i MA1201 Lineær algebra og geometri

ALGORITMER OG DATASTRUKTURER

Eksamen i fag SIF8010 Algoritmer og datastrukturer Lørdag 9. august 2003, kl

KONTINUASJONSEKSAMEN I FAG ALGORITMER OG DATASTRUKTURER

Vær OBS på at svarene på mange av oppgavene kan skrives på flere ulike måter!

Løsningsforslag for utvalgte oppgaver fra kapittel 9

Vektorligninger. Kapittel 3. Vektorregning

45011 Algoritmer og datastrukturer Løsningsforslag eksamen 13. januar 1992

NP-kompletthet. «Hvordan gjøre noe lett for å vise at noe annet er vanskelig»

Tallsystemet vi vanligvis bruker, er et plassverdisystem med grunntall 10. Det finnes også plassverdisystemer med andre grunntall.

Øvingsforelesning Korteste vei: Alle til alle

Oppgavesett med fasit

Eksamensoppgave i TDT4120 Algoritmer og datastrukturer

Enkel matematikk for økonomer. Del 1 nødvendig bakgrunn. Parenteser og brøker

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Eksamen MAT1011 Matematikk 1P. Nynorsk/Bokmål

Plan for fagdag 1. Plan: Viktig å få gjort arbeidsoppgavene! Differanse- og summefølger. Bruk av kurvetilpasning. Fagdag R

ALGORITMER OG DATASTRUKTURER

Eksamen MAT1005 Matematikk 2P-Y Høsten 2013

Straffespark Introduksjon Scratch Lærerveiledning

Lineære likningssystemer og matriser

Løsningsforslag Eksamen M001 Våren 2002

Korteste vei problemet (seksjon 15.3)

INEC1800 ØKONOMI, FINANS OG REGNSKAP EINAR BELSOM

7 t 11 t 14 t kr. 350 t kr. 1 Returkraft mottar avfall 2 [FUNKSJONER PÅ RETURKRAFT HEFTE B]

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

Eksamen MAT1005 Matematikk 2P-Y Høsten 2014

Enkel matematikk for økonomer 1. Innhold. Parenteser, brøk og potenser. Ekstranotat, februar 2015

Løsningsforslag, eksamen i MA0002, Brukerkurs i matematikk B

Oppfriskningskurs Sommer 2019

UNIVERSITETET I OSLO

Løsningsforslag. og B =

Funksjoner og andregradsuttrykk

I Katalog velger du: Ny eksamensordning i matematikk våren 2015

Eksamen i fag SIF8010 Algoritmer og Datastrukturer Tirsdag 18. Desember 2000, kl

LP. Leksjon 5. Kapittel 5: dualitetsteori. motivasjon det duale problemet svak og sterk dualitet det duale til LP problemer på andre former

Algebra. Likningsløsning. tasten) for å komme ned til S, og bla videre nedover til du finner solve(.

Notat for oblig 2, INF3/4130 h07

TMA4115 Matematikk 3 Vår 2017

Funksjoner, likningssett og regning i CAS

S1 eksamen våren 2017 løsningsforslag

På reise Nivå: Formål: Program: Henvisning til plan: 8. klasse Matematikk i dagliglivet: Tall og algebra: Grafer og funksjoner:

Dijkstras algoritme. Her finnes det også (minst) en riktig rekkefølge for Relax, men den må vi oppdage litt etter hvert.

Python: Rekursjon (og programmering av algoritmer) Python-bok: Kapittel 12 + teoribok om Algoritmer

MA0002 Brukerkurs i matematikk B Vår 2017

Øvingsforelesning 9. Flytnettverk, maksimum flyt og maksimum bipartitt matching. Jon Marius Venstad

Avsluttende eksamen i TDT4120 Algoritmer og datastrukturer

To geometriske algoritmer, kap. 8.6

Grafteori. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

6 Determinanter TMA4110 høsten 2018

Oppgave 3 a. Antagelser i oppgaveteksten. INF1020 Algoritmer og datastrukturer. Oppgave 3. Eksempelgraf

Løsningsforslag - Korteste vei

Moderne optimering mer enn å derivere!!

UNIVERSITETET I OSLO

TMA4122/TMA4130 Matematikk 4M/4N Høsten 2010

MAT1030 Diskret Matematikk

Anvendelser av grafer

MAT1030 Forelesning 23

UNIVERSITETET I OSLO

INF109 - Uke 1b

Eksamen MAT1013 Matematikk 1T Våren 2012

Forelesning 23. MAT1030 Diskret Matematikk. Repetisjon og mer motivasjon. Repetisjon og mer motivasjon. Forelesning 23: Grafteori.

MA1201, , Kandidatnummer:... Side 1 av 5. x =.

Eksamen MAT1015 Matematikk 2P Våren 2013

LØSNINGSFORSLAG, EKSAMEN I ALGORITMER OG DATASTRUKTURER (IT1105)

Øvingsforelesning 7. Dijkstras algoritme. Foiler: Fredrik Ludvigsen Foreleser: Jon Marius Venstad 10/4/09 1

IN Algoritmer og datastrukturer

Løsningsforslag til eksamen i PG4200 Algoritmer og datastrukturer 10. desember 2014

UNIVERSITETET I OSLO

dg = ( g P0 u)ds = ( ) = 0

1T eksamen høsten 2017 løsning

Lineære ligningssystem; Gauss-eliminasjon, Redusert echelonmatrise

Transkript:

Eirik Benum Reksten Hans Olav Norheim (ja, det kommer nok litt matte nå ja)

Hva er lineærprogrammering? Vi har et problem hvor vi... 1. ønsker å minimere eller å maksimere et mål 2. kan spesifisere målet som en lineær funksjon av spesifikke variable 3. Kan spesifisere de tilgjengelige ressursene som ligninger på disse variablene Dersom et problem tilfredsstiller de tre punktene over kan det løses ved hjelp av lineærprogrammering

Lineært Program Et lineært program er en matematisk struktur som består av: Et uttrykk som enten skal maksimeres eller minimeres. Et sett med ulikheter, som er lineære funksjoner av variablene. I dette faget skal dere lære å formulere problemer som lineære programmer!

Eksempel Åsmund ønsker å bli president i Algdatia Det er 3 fylker i Algdatia Sort, 100 000 velgere Flow, 200 000 velgere Path, 50 000 velgere For å vinne valget må han ha minst 50% av stemmene i hvert eneste fylke Han har 4 kjernesaker han kan reklamere for Kortere veier Sortert telefonkatalog Gratis algdatbøker til alle Bensinpriser 1 krone til reklame for en sak vil gi han X antall velgere mer eller mindre i hvert fylke.

Valgkampsaker Kjernesak \ Fylke Sort Flow Path Kortere veier -2 5 3 Sortert telefonkatalog 8 2-5 Gratis algdatbøker 0 0 10 Bensinpriser 10 0-2 Befolkning (tusen) 100 200 50 Tabellen viser antall stemmer han får dersom han bruker 1 krone på reklame for en kjernesak Eksempel: 1 krone brukt på reklame for kortere veier vil gi 2 stemmer mindre i Sort mens det vil gi 5 stemmer i flow og 3 stemmer i Path

Hvor mye må Åsmund bruke på valgkamp? Simpelt å bare finne et beløp som gir minst 50% i alle fylker Finn et beløp som fordelt gir pluss til alle fylker F.eks.. 1 krone på kortere veier og 1 på bensinpriser som gir Sort +8, Flow +5 og Path +1 Bare å gange dette opp til en har nok stemmer i alle fylker Åsmund er gjerrig og skjønner at dette ikke gir en optimal løsning. Han vil bruke minst mulig penger. Klok som han er skjønner han at dette kan formuleres til et problem i lineærprogrammering

Minimere eller maksimere et mål Målet er minst mulig reklamepenger Åsmund ønsker å bruke minst mulig penger til dette (minimere) Vi har et lineærprogram!

Målet kan spesifiseres som en lineær funksjon av spesifikke variable Penger brukt på reklame for: Kortere veier = X1 Sortert telefonkatalog = X2 Gratis algdatbøker = X3 Bensinpriser = X4 Reklamepenger = X1 + X2 + X3 + X4

Kjernesak Sort Flow Path Kortere veier -2 5 3 Sortert telefonkatalog 8 2-5 Bondegårdsferie til alle 0 0 10 Bensinpriser 10 0-2 Befolkning (tusen) 100 200 50 Sort: -2X1 + 8X2 + 0X3 + 10X4 >= 100/2 Flow: 5X1 + 2X2 + 0X3 + 0X4 >= 200/2 Path: 3X1-5X2 + 10X3 + -2X4 >= 50/2 Kan ikke bruke negativt antall kroner: X1, X2, X3, X4 >=0

Kan nå sette opp et lineært program Minimér X1 + X2 + X3 +X4 Med begrensningene: -2X1 + 8X2 + 0X3 + 10X4 >= 50 5X1 + 2X2 + 0X3 + 0X4 >= 100 3X1-5X2 + 10X3-2X4 >= 25 X1, X2, X3, X4 >=0 Lineært PROGRAM Løsningen her vil gi minst 50% stemmer i hvert fylke samt minst mulig penger brukt til reklame

Hva er det man egentlig løser? Enkelt eksempel kun 2 variable Maksimer X1 + X2, begrenset av: 4X1 X2 <= 8 2X1 + X2 <= 10 5X1 2X2 >= -2 X1, X2 >= 0 Området ulikhetene avgrenser er gult på figuren på neste side Alle muligheter for X1 + X2 som ligger inne i dette området kales feasiblesolutions. Det er inne i det området en må maksimere X1 +X2

2 dimensjoner i koordinatsystem

Standardform Standard måte å sette opp et lineærprogram på 1. Må være et maksimeringsproblem 2. Alle ulikhetene må være på formen: ax1 + bx2... <= C (dvs. lineær ligning mindre eller lik en konstant) 3. X1, X2,... >= 0 for alle variabler

Konvertering til standardform 4 ting som kan gjøre at det ikke er på standardform 1. Kan ha et minimeringsproblem 2. Kan ha likheter i stedet for ulikheter 3. Kan ha større-lik ulikheter (feil vei) 4. Kan finnes variabler som ikke er nedre begrenset av 0

1. Minimering maksimering Enkelt; bare å endre fortegn på målet Minimer: X1 + X2 + X3 + X4 Maksimer: -X1 - X2 - X3 - X4

2. Fikse = <= Anta X1 4X2 = 5 Bytter ut med: X1 4X2 <=5 X1 4X2 >=5 Disse 2 sammen betyr X1 4X2 = 5

3. Fikse >= <= Anta X1 4X2 >= 5 Gange hele med (-1) -X1 + 4X2 <= -5 NB: >= <= når en ganger med (-1) på begge sider

4. Lage nedre begrensning 0 på en variabel som ikke har det Anta at X ikke er nedre begrenset Sett X = Y - Z Legg til Y, Z >= 0

Slack form Som standardform, men med LIKheter i stedet for ULIKheter (bortsett fra >= 0-ulikhetene) Introduserer nye variabler s i, et mål på differansen mellom høyre og venstre side av ulikheten Har: 5X1 + 2X2 <= 100 000 0 <= 100 000 (5X1 + 2X) Gir med slack: s = 100 000-5X1-2X s >= 0

Slack form (2) Kokebokoppskrift fra standard slack form 1. Sett målet lik z eks. z = X1+ 3X2 2. Gjør om ulikhetene til å inneholde en slack 5X1 + 30X2 <= 100 s1 = 100-5X1-2X og 17X1 - X2 <= 10 s2 = 10-17X1 + X2 3. Føy til de nye slack-variablene i >= 0-rekka. Boka bruker x n+1 som første slack-variabel.

Slack form: Eksempel Standard form: Maksimer X1 + X2 begrenset av: 4X1 X2 <= 8 2X1 + X2 <= 10 X1, X2 >= 0 Slack form: Maksimer z = X1 + X2 begrenset av: X3 = 8 (4X1 X2) X4 = 10 (2X1 + X2) X1, X2, X3, X4 >= 0

Kort om simplex Løser lineære programmer på slack form Worst case er exponentiel kjøretide: a^n Ofte mye raskere i praksis Linker (fin, men tror den har en feil, den klarer ikke å løse alle løselige problemer) http://people.hofstra.edu/faculty/stefan_waner/realw orld/simplex.html (litt mer tungvindt å bruke, men ser ut til å fungere bra) http://wwwfp.mcs.anl.gov/otc/guide/casestudies/simplex/applet/s implextool.html

Eksempler på problemer som kan løses ved lineære programmer Korteste vei Bedre med egne teknikker Maks flyt Bedre med egne teknikker Sirkulasjonsproblemer Best ved hjelp av lineære programmer

Korteste vei som lin.prog. (single pair) G = (V, E), w: E R Maximize d[t] subject to d[v] <= d[u] + w(u, v) for each edge (u, v) in E d[s] = 0 V variables (d[v], d[u] ), E + 1 constrains JA, det står MAXIMIZE.

Maks flyt som lin.prog. G = (V, E), w: E R Maximize subject to f(u, v) <= c(u, v) for each u, v in V f(u, v) = -f(v, u) for each u, v in V = 0 for each u in V {s, t} V 2 variables, 2 V 2 - V - 2 constraints

Sirkulasjonsproblemet Det vi kjenner som maks-flyt nå kan generaliseres til et sirkulasjonsproblem. Start og slutt-noder er da ikke spesielle lenger; vi oppretter en kant fra slutt til start og jobber med sirkulasjon i stedet. Vihartoandre kjente spesialiseringeravsirkulasjonsprob Minimum-cost-flow Kanter har nå en kostnad per enhet i tillegg til kapasitet. Vi ønsker å oppnå en flyt d i grafen fra s til t billigst mulig. Multicommodity flow Vi har strømmer av forskjellige varer fra startnodene s i til t i, som deler samme transportnettverk.

Oppg. 5, eksamen 2005H På en nyttårsfest er det invitert N gutter og N jenter, og arrangøren vil opnåatsåfåsommuligfåren ikespesieltønsket bordkavaler/dame til bords. Spørreundersøkelse gjennomført, data samlet i to matriser G og P. G(i, j) = 0 dersom gutt nr. i ikke spesielt ønsker jente nr. j, j = 1,2,..., N; ellers er G(i, j) = 1. P(j, i) = 0 dersom jente nr. j ikke spesielt ønsker gutt nr. i, i = 1, 2,..., N; ellers er P(j, i) = 1. Ønskene er ikke nødvendigvis gjensidige; eksempelvis kan G(5, 19) = 1 mens P(19, 5) = 0. Problem PAR: Finn en par-sammensetting som er slik at så få personer som mulig ender opp med å få en ikke spesielt ønsket person til bords.

Løsning

Løsning (2) s 0/1 0/1 0/1 1 2 3 Min/max flow: 0/1 Kostnad: -(G(i,j) + P(j,i)) 0/N 1 2 3 0/1 0/1 0/1 t

Oppgave 6, 2005H GLAGNAR er en type datastruktur (en klasse) 4 attributter/felter: buncha, muncha, cruncha og human. zoid er en minimums-heap av GLAGNAR-instanser, GLAGNAR sammenlignes på muncha Du er usikker på hva buncha-feltene er satt til for instansene i zoid, men du vet at muncha-feltene er satt til ulike tall. runcha og human-attributtene for disse instansene er udefinerte. while zoid.length > 1 pop a fra zoid pop b fra zoid rinds en ny GLAGNAR-instans rinds.muncha a.muncha + b.muncha rinds.cruncha a rinds.human b sett (dvs. push) rinds inn i zoid Hva gjør koden?