729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, [email protected] Föreläsningsöversikt ⁃ Information i grafstrukturer ⁃ Diskret matematik Relationer: kopplingar mellan mängder Funktioner som brygga mellan mängder Grafer och träd som informationsstrukturer ⁃ Python logiska operatorer exempel på användning av while-loopen Information i grafstrukturer Exempel Introuppgifter Introuppgift 1 DM-uppg 1 DM-uppgifter Introuppgift 2 Introuppgift 3 Tema 1 Py-uppg 1 Tema 2 DM-uppg 2 Py-uppg 2 Tema 3 DM-uppg 3 Temauppgift 1 Temauppgift 2 Temauppgifter Temauppgift 3 Py-uppg 3 Pythonuppgifter Mängdrepresentationer av fyrkanterna ⁃ T = { t1, t2, t3 } ⁃ D = { d1, d2, d3 } ⁃ P = { p1, p2, p3 } ⁃ Ut = { ut1, ut2, ut3 } ⁃ Ui = { ui1, ui2 ui3 } ⁃ U = { d, p, ut, ui } Hur representerar vi strecken? ⁃ Varje streck får vara en mängd där start och slut finns med. Vi samlar sedan alla dessa i en mängd: en mängd av streck ⁃ E = { {d, d1}, {d, d2} ... {d1,t1}, {ui, ui1}, ... } Relationer kopplingar mellan mängder Repetition: par, tupler ⁃ En 2-tupel är ett ordnat par av värden. ⁃ Notation: (a, b) ⁃ Eftersom paret är ordnat gäller (𝑎, 𝑏) ≠ (𝑏, 𝑎) ⁃ En 𝑛-tupel är en ändlig sekvens av 𝑛 stycken komponenter (jmf med element i en mängd) ⁃ ordnade par (även kallade för enbart par) och 𝑛-tupler är tupler. Kryssprodukt / Kartesisk produkt ⁃ A = { 𝑎, 𝑏, 𝑐 }, B = { 1, 2, 3 } ⁃ A × B är kryssprodukten av A och B (utläses "A kryss A") ⁃ A × B = { (a,1), (a,2), (a,3), (b,1), (b,2), (b,3), (c,1), (c,2), (c,3), } 1 2 3 a (a,1) (a,2) (a,3) b (b,1) (b,2) (b,3) c (c,1) (c,2) (c,3) Relationer ⁃ Informellt: en relation mellan två mängder A och B är en mängd som innehåller par med en komponentfrån A och en komponent från B. ⁃ En relation "på mängden A" är en relation mellan mängden A och sig själv. ⁃ Om A = { a, b, c } får vi alla möjliga tupler som kan ingå i relationen R på A genom att ta A × A. Relationer ⁃ En relation mellan två mängder A och B är en delmängd av A × B. ⁃ En relation på mängden A är en delmängd av A × A. Notation ⁃ Låt A och B vara mängder och och R vara en relation mellan A och B. ⁃ Om (a, b) ∈ R kan vi skriva aRb som utläses "a är relaterat till b" Funktioner som bryggor mellan mängder Funktion ⁃ En funktion är en "regel" som kopplar varje element i en mängd, till exakt ett element i en annan mängd. ƒ:A→B ⁃ Funktionen ƒ går från mängden A till mängden B. ⁃ A är funktionens definitionsmängd, D𝑓. ⁃ B är funktionens målmängd. ⁃ Om vi får en mer specifik definition av ƒ, t.ex. ƒ(x) = 2x, så kan vi även beskriva funktionens värdemängd. ⁃ Värdemängden Vf är då { y : y ∈ ƒ(x) }. ⁃ Vidare, om vi vet att A är de naturliga talen N, kan vi säga att värdemängden är { y : y ∈ 2x, x ∈ N } Grafer och träd XML - hierarkisk informationsstruktur ⁃ XML är en hierarkisk informationsstruktur Alla element förutom rot-elementet har exakt en förälder Rot-elementet har exakt 0 förädrar Detta är en speciell typ av graf. Grafer ⁃ En graf är (informellt) en en mängd element och kopplingar mellan dessa element. ⁃ Trädstrukturen (som vi t.ex. hittar i XML) är en speciell sorts graf Trädstruktur book author title year contents firstname lastname Tractatus logicophilosophicus 1921 chapter Ludvig Wittgenstein title section Inledning title paragraph 1. Wittgenstein och Tractacus … Från XML till graf a book a author title year b c d Ludvig Wittgenstein Tractatus logicophilosophicus 1921 e f g b c d e f g Från XML till graf ⁃ Noder/Hörn: {a, b, c, d, e, f, g} ⁃ Kanter/bågar: strecken mellan elementen a b c d e f g Oriktade och riktade grafer Rotat träd: book author title year contents firstname lastname Tractatus logicophilosophicus 1921 chapter Ludvig Wittgenstein title section Inledning title paragraph 1. Wittgenstein och Tractacus … Grafer på formen G = (V, E) Matematisk representation av en graf ⁃ V är en mängd med noder, t.ex. { a, b, c, d } ⁃ E är en mängd av kanter (strecken). Varje kant är en mängd som innehåller de två noder som kanten går mellan. Exempel: { { a, b }, { a, c } } ⁃ Vi kan då definiera grafen G som G = (V, E) Matematisk representation av en riktad graf ⁃ V är en mängd med noder, t.ex. { a, b, c, d } ⁃ E är en mängd av kanter (strecken). ⁃ Om vi vill representera riktning hos kanterna, dvs göra dem till pilar, låter vi dem vara tupler istället för mängder. ⁃ Exempel: E = { (a, b), (a, c) } ⁃ Vi kan då definiera den riktade grafen G som G = (V, E) Grad, ingrad/utgrad logiska operatorer Logiska operatorer ⁃ används för att kombinera jämförelser, t.ex. "om det är 10 grader kallt och det kommer nederbörd" ⁃ Logiska operatorer i Python: and, or, not Exempel med and och or #omvalueärmellan5och10 ifvalue>=5andvalue<=10: print("valuevarmellan5och10") #omvalueär10eller20 ifvalue==10orvalue==20: print("valuevar10eller20") Logiska operatorer opererar på sanningsvärden ⁃ Jämför 5 + 4 → 9 med True and True → True. ⁃ De logiska operatorerna and och or tar två argument och returnerar ett svar som antingen är True eller False. ⁃ x and y: True om både x och y är True. False i alla andra fall. ⁃ x or y: True om x är True, eller om y är True, eller om x och y är True. Bara False om både x och y är False. Logiska operatorn not ⁃ Negerar det sanningsvärde det står framför. ⁃ not True ger alltså False och not False ger True Logiska operatorer xandy xory x y resultat True True True True False False False True False False False False x y resultat True True True True False True False True True False False False notx x resultat True False False True while-loopen några tillämpningar Leta efter ett värde i en lista https://trinket.io/python3/81db226056
© Copyright 2024