729G74 IT och programmering, grundkurs Tema 2. Föreläsning 3 Jody Foo, jody.foo@liu.se
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 Datorer och sekventiell information Python logiska operatorer exempel på användning av while-loopen
Information i grafstrukturer
Innehåll i denna kurs som en mängd DM-uppgifter Temauppgift 2 Pythonuppgifter Introuppgift 2 Introuppgift 1 DM-uppg 2 Py-uppg 1 DM-uppg 1 Tema 1 Tema 3 Introuppgifter Temauppgifter Temauppgift 1 Tema 2 DM-uppg 3 Introuppgift 3 Temauppgift 3 Py-uppg 3 Py-uppg 2
Vissa element var kategorier Introuppgifter Pythonuppgifter Introuppgift 1 Introuppgift 2 Introuppgift 3 Py-uppg 1 Py-uppg 2 Py-uppg 3 DM-uppgifter Temauppgifter DM-uppg 1 DM-uppg 2 DM-uppg 3 Temauppgift 1 Temauppgift 2 Temauppgift 3 Hur skulle vi kunna u-rycka denna struktur med hjälp av diskret matema7k? Mängder och tupler?
Py-uppgifter DM-uppgifter Introuppgifter Temauppgifter Temauppg 1 Temauppg 2 Temauppg 3 Py-uppg 1 Py-uppg 2 Py-uppg 3 DM-uppg 1 DM-uppg 2 DM-uppg 3 Introuppg 1 Introuppg 2 Introuppg 3 Py-uppgifter DM-uppgifter Introuppgifter Temauppgifter Temauppg 1 Temauppg 2 Temauppg 3 Py-uppg 1 Py-uppg 2 Pyuppg 3 DM-uppg 1 DM-uppg 2 DM-uppg 3 Introuppg 1 Introuppg 2 Introuppg 3
Py-uppgifter DM-uppgifter Introuppgifter Temauppgifter Temauppg 1 Temauppg 2 Temauppg 3 Py-uppg 1 Py-uppg 2 Pyuppg 3 DM-uppg 1 DM-uppg 2 DM-uppg 3 Introuppg 1 Introuppg 2 Introuppg 3 Py-uppgifter x x x DM-uppgifter x x x Introuppgifter x x x Temauppgifter x x x Temauppg 1 Temauppg 2 Temauppg 3 Py-uppg 1 Py-uppg 2 Py-uppg 3 DM-uppg 1 DM-uppg 2 DM-uppg 3 Introuppg 1 Introuppg 2 Introuppg 3 Hur beskriver vi kryssen?
Alternativ? Temauppgifter Temauppg 1 Temauppg 2 Temauppg 3 Temauppgifter x x x Temauppg 1 Temauppg 2 Temauppg 3 {temauppgifter, temauppg1, temauppg2, temauppg3} (temauppgifter, temauppg1, temauppg2, temauppg3) temauppgifter = {temauppg1, temauppg2, temauppg3} temauppgifter = (temauppg1, temauppg2, temauppg3) {{temauppgifter, temauppg1}, {temauppgifter, temauppg2}, {temauppgifter, temauppg3}} {(temauppgifter, temauppg1), (temauppgifter, temauppg2), (temauppgifter, temauppg3)}
Kryssprodukt / Kartesisk produkt A = { a, b, c }, 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) } a b 1 2 3 (a,1) (a,2) (a,3) (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"
Relationer kopplingar mellan mängder
Vissa element var kategorier Introuppgifter Pythonuppgifter Introuppgift 1 Introuppgift 2 Introuppgift 3 Py-uppg 1 Py-uppg 2 Py-uppg 3 DM-uppgifter Temauppgifter DM-uppg 1 DM-uppg 2 DM-uppg 3 Temauppgift 1 Temauppgift 2 Temauppgift 3 Hur skulle vi kunna u-rycka denna struktur med hjälp av diskret matema7k? Mängder och tupler?
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
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 f. 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 V f ä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 b c d Ludvig Wittgenstein Tractatus logicophilosophicus 1921 e f g 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
De flesta beräkningarna och processer i datorer är sekventiella Information läses sekventiellt från start till slut. Vad får detta för konsekvenser?
Vem är längst? A B C
Vem är längst? 120 100 160 A B C
Vem är längst? A 1 2 3 4 5 6 B C D E F G H I
Vem är längst? A B C D E F G H I 1 1 2 71 6 56 5 57 55 84 2 17 89 13 31 22 30 34 65 61 3 69 3 2 62 68 86 8 23 67 4 14 7 2 32 7 11 63 60 16 5 32 2 70 89 3 72 68 59 15 6 53 7 24 8 26 28 67 54 64
Från datorns perspektiv Har datorn en översiktsbild? Kan datorn titta på en hel lista på en gång? Datorn kan "titta" på ett element i taget Vi måste tillhandahålla arbetsminne Datorn kommer inte ihåg något "automatiskt"
while-loopen några tillämpningar
Leta efter ett värde i en lista https://trinket.io/library/trinkets/f5c971c5b4
Filer
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 # om value är mellan 5 och 10 if value >= 5 and value <= 10: print("value var mellan 5 och 10") # om value är 10 eller 20 if value == 10 or value == 20: print("value var 10 eller 20")
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 x y resultat x resultat x and y True True True not x True False True False False False True False False False False x y resultat x or y True True True True False True False True True False False False False True