380 likes | 509 Views
Faglighed. Hvad interesserer du dig for? Hvad ved du noget om? Hvad kan du?. Det er vigtigt at kende sin egen faglighed (ikke mindst i tværfaglige sammenhænge). Kend din faglighed - og respekter andres. Uddannelse og beskæftigelse.
E N D
Faglighed • Hvad interesserer du dig for? • Hvad ved du noget om? • Hvad kan du? Det er vigtigt at kende sin egen faglighed (ikke mindst i tværfaglige sammenhænge). Kend din faglighed - og respekter andres.
Uddannelse og beskæftigelse • Uddannelse: Cand. Scient. fra Københavns Universitet 1973: Hovedfag: datalogi Bifag: matematik Speciale: Automatisk bevisførelse • Beskæftigelse: Pædagogikum i matematik 1973 (1/2 år) • Matematiklærer på Hf 1974 (1/2 år) • Timelærer på RUC 1974 (1/2 år) • Adjunkt i datalogi på RUC 1975-79 • Lektor i datalogi på RUC 1979-
Automatisk bevisførelse • Bevisførelse: at påvise af at et udsagn følger logisk af en række andre udsagn • Automatisk bevisførelse: en mekanisering af bevisførelsesprocessen
Eksempel på et bevisførelsesproblem • Givet følgende 2 udsagn: Socrates er et menneske. Alle mennesker er dødelige. • Påvis at vi kan konkludere, at Socrates er dødelig.
En andet eksempelproblem • Arne, Børge og Christian er medlemmer af Alpinistklubben. • Ethvert medlem, som ikke er skiløber, er bjergbestiger. • Bjergbestigere kan ikke lide regn, og enhver, som ikke kan lide sne, er ikke skiløber. • Børge kan ikke lide det, som Arne kan lide, men kan lide alt det, som Arne ikke kan lide. Arne kan lide regn og sne. • Spørgsmålet lyder: Er der et medlem af Alpinistklubben, som er bjergbestiger, men ikke skiløber?
Opgaver og kompetencer • Implementering og vurdering af en algoritme til automatisk bevisførelse i første-ordens prædikatkalkulen baseret på SL-resolution og modelelimination. • Kompetencer: • matematisk logik • datastrukturer • oversætterteknik • filstrukturer
Databaser • Problem: Lad der være givet en mængde af geografiske lokationer. Find hurtigt alle de lokationer, der ligger inden for en givet område (f.eks. en polygon).
Opgaver og kompetencer • Design af en datastruktur, der muliggør effektiv indsættelse, søgning og sletning. • Teoretisk og empirisk vurdering af effektiviteten. • Implementering i det objektorientede sprog SIMULA af et databaseværktøj baseret på datastrukturen. • Kompetencer: datastrukturer • filstrukturer • geometriske algoritmer • objektorienteret design og programmering • algoritmeanalyse
Simulering • Udvikling af et sprog til kombineret kontinuert og diskret simulering. • Simulering: eksperimentering med modeller på en datamaskine. • Diskret simulering: simulering, hvor modellen er beskrevet ved hændelser. (eks.: simulering af kassebetjeningen i et supermarked) • Kontinuert simulering: simulering, hvor modellens variabler varierer kontinuert, typisk beskrevet ved hjælp af differentialligninger. (eks.: simulering af planeternes bevægelse).
Kombineret simulering • Kombineret simulering: Simulering, hvor der indgår såvel hændelser som kontinuert variation. (eks.: simulering af et elevatorsystem).
Opgaver og kompetencer • Udvikling i SIMULA af et objektorienteret programmerings-værktøj til kombineret kontinuert og diskret simulering. • Kompetencer: Sprogdesign • Simuleringsteknik og -sprog • Numerisk analyse
Programmeringsparadigmer • Ikke-deterministisk programmering (baksporing). • Programmering ved hjælp af korutiner.
Baksporing(”baglæns” udførelse, eng. backtracking) • Baksporing er velegnet til løsning af kombinatoriske problemer, d.v.s. problemer, hvor målet er, blandt et (ofte stort) antal muligheder, at finde den eller de, der opfylder en række givne betingelser. • Algoritmen starter med at gå forlæns og træffer undervejs en række beslutninger. • Men hvis den kommer til en blindgyde, som ikke vil kunne føre til en løsning, baksporer den, d.v.s. går baglæns og omgør (om muligt) den sidst trufne beslutning. • Derefter går den atter fremad.
Opgaver og kompetencer • Udvikling og afprøvning af værktøjer til baksporsprogrammering i • • SIMULA • • C • Kompetencer: • Sprogdesign • Køretidssystemer • Maskinnær programmering • Kombinatorisk problemløsning
Programmering ved hjælp af korutiner • En korutine (eng. coroutine) er en rutine, der kan blive afbrudt i sit arbejde, for så eventuelt senere at genoptage det. • Korutiner repræsenterer rutiner, der samarbejder for at løse en given opgave. Idet der dog ikke er tale om parallelitet. • Brugen af korutiner forenkler programmeringen i en lang række tilfælde. • To eksmpler på anvendelsesområder: • diskret simulering • oversætterkonstruktion
Opgaver og kompetencer • Udvikling og afprøvning af et værktøj til programmering ved hjælp af korutiner i C++. • Kompetencer: • Sprogdesign • Køretidssystemer
Kombinatorisk optimering • Løsning af kombinatoriske problemer, hvor målet er, blandt et antal muligheder, at finde den, der opfylder en række givne betingelser, og som er den mest ”optimale”. • Denne type af problemer forekommer hyppigt i praksis, men de er ofte vanskelige at løse på grund af et stort antal muligheder.
? Den rejsende sælgers problem
Eksempel med 7 byer: Sandvig-Allinge Gudhjem Hasle Svaneke Rønne Neksø Åkirkeby Den rejsende sælgers problem En sælger skal besøge et antal byer. Find den korteste tur, som starter og ender i en given by.
Problemets fødsel F. Voigt (1831): Der handlungsreisende, wie er sein soll und was zu tun hat, um Aufträge zu erhalten und eines glucklischen Erfolgs in seinen Geschäften gewiss zu sein. Von einem alten Commis-Voyageur. Råd: Besøg så mange steder som muligt uden at besøge noget sted to gange. Problemet blev første gang forsøgt løst af matematikere ved Princeton University i 1931.
Eksempler på anvendelse • Ruteplanlægning • Produktionsplanlægning • Ledningsføring • Robotstyring • Boring af printplader
Motivation • Mange anvendelser. • Problemet er typisk for en lang række tilsvarende problemer. Teoretisk og praktisk indsigt opnået fra studiet af problemet kan ofte overføres til tilsvarende problemer.(Landvindinger: Branch-and-bound, kompleksitetsteori)
Problemets kompleksitet Antallet af mulige ruter for symmetriske tilfælde med n byer: (n-1)!/2 • for n = 20: antal ruter > 1018 • for n = 532: antal ruter > 101200 • Jvf.: - antal mikrosekunder på et år: ≈ 1013 • - antal elementarpartikler i hele det kendte univers: ≈ 1083
Løsningsalgoritmer Eksakte algoritmer • Problemet tilhører en mængde, NP, af “svære” problemer med eksponentiel tidskompleksitet. Approksimative (heuristiske) algoritmer Turkonstruktionsalgoritmer Turforbedringsalgoritmer Kombinerede algoritmer
Eksempel på turkonstruktionsalgoritme Nærmeste nabo Ingen kvalitetsgaranti
Lin-Kernighans algoritme(variabel k-opt) Opgave: forbedring af denne algoritme.
Vurdering af ydeevne (tid og løsningskvalitet) • Analyse af værste opførsel • Analyse af gennemsnitlig opførsel • Empirisk analyse
Resultater • Den forbedrede algoritme finder ikke blot næroptimale løsninger på kort tid. Den finder optimum med meget stor sandsynlighed! • For alle problemer med kendt optimum har algoritmen fundet optimum. • TSPLIB indeholder cirka 100 sådanne problemer, hvoraf det største er på 13509 byer (svarende til 1050,000 mulige ture).
2392-by problem(optimal løsning) Tidsforbrug: cirka 2 minutter
3038-by problemet(optimal løsning) Tidsforbrug: cirka 7 minutter
4461-by problem(optimal løsning) Tidsforbrug: cirka 20 minutter
7397-by problem(optimal løsning) Tidsforbrug: cirka 4 timer
13509-by problem(optimal løsning) Tidsforbrug: cirka 2 dage
85900-by problem(hidtil bedste løsning) Tidsforbrug: cirka 5 dage