Föreläsningsbilder

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
⁃ 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