1 / 38

Faglighed

Faglighed. Hvad interesserer du dig for? Hvad ved du noget om? Hvad kan du?. Vanskeligheden ved for en datalog at beskrive sin egen faglighed er udgangspunktet for artiklen E. W. Dijkstra: ”The Humble Programmer”, Comm. ACM., Vol. 10 (1972), pp. 859-866. Uddannelse og beskæftigelse.

jorryn
Download Presentation

Faglighed

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Faglighed • Hvad interesserer du dig for? • Hvad ved du noget om? • Hvad kan du? Vanskeligheden ved for en datalog at beskrive sin egen faglighed er udgangspunktet for artiklen E. W. Dijkstra: ”The Humble Programmer”, Comm. ACM., Vol. 10 (1972), pp. 859-866.

  2. 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-

  3. 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

  4. 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.

  5. 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?

  6. Opgave 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

  7. 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).

  8. 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

  9. 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).

  10. Kombineret simulering • Kombineret simulering: Simulering, hvor der indgår såvel hændelser som kontinuert variation. (eks.: simulering af et elevatorsystem).

  11. Opgave 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

  12. Programmeringsparadigmer • Ikke-deterministisk programmering (baksporing). • Programmering ved hjælp af korutiner.

  13. 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.

  14. 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

  15. 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

  16. 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

  17. 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.

  18. ? Den rejsende sælgers problem

  19. 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.

  20. 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.

  21. Eksempler på anvendelse • Ruteplanlægning • Produktionsplanlægning • Ledningsføring • Robotstyring • Boring af printplader

  22. 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)

  23. Problem med 532 byer

  24. Optimal løsning

  25. 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

  26. 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

  27. Eksempel på turkonstruktionsalgoritme Nærmeste nabo Ingen kvalitetsgaranti

  28. Eksempel på turforbedringsalgoritmeOmbytning(2-opt)

  29. Lin-Kernighans algoritme(variabel k-opt) Opgave: forbedring af denne algoritme.

  30. Vurdering af ydeevne (tid og løsningskvalitet) • Analyse af værste opførsel • Analyse af gennemsnitlig opførsel • Empirisk analyse

  31. 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).

  32. 2392-by problem(optimal løsning) Tidsforbrug: cirka 2 minutter

  33. 3038-by problemet(optimal løsning) Tidsforbrug: cirka 7 minutter

  34. 4461-by problem(optimal løsning) Tidsforbrug: cirka 20 minutter

  35. 7397-by problem(optimal løsning) Tidsforbrug: cirka 4 timer

  36. 13509-by problem(optimal løsning) Tidsforbrug: cirka 2 dage

  37. 85900-by problem(hidtil bedste løsning) Tidsforbrug: cirka 5 dage

More Related