Labo IDP. In dit labo gaan we IDP gebruiken voor het analyseren van logische circuits. XOR Q AND. Figuur 1: Een logisch circuit.

Vergelijkbare documenten
Labo IDP 1. April 22, 2010

IDP: Labo 2. Given: type int Octaal = {1;2;3;4;5;6;7;8} type int Octaal = {1..4;5;6..8}

Maak automatisch een geschikte configuratie van een softwaresysteem;

Oefeningen Digitale Elektronica (I), deel 4

Stelling. SAT is NP-compleet.

Opgave 2. Binaire informatie

Wouter Geraedts Processen & Processoren

Hoofdstuk 14: Datum & Tijdfuncties

Functioneel programmeren

8/2/2006 Examen Optimalisatietechnieken (6sp) 1

Gegevens invullen in HOOFDLETTERS en LEESBAAR, aub. Belgische Olympiades in de Informatica (duur : maximum 1u15 )

sportadministratie Hoe de kalender/rangschikking opbouwen?

Hoofdstuk 1. Inleiding. Het binomiaalgetal ( n

Computerrekenpakket Maple zesde jaar

11. Multipele Regressie en Correlatie

samenstelling Philip Bogaert

Practica bij het vak. Inleiding tot de Elektrotechniek: Practicum 2 Analoge versus digitale signalen en hun overdracht

Bespreking Examen Analyse 1 (Augustus 2007)

Opgave 2 ( = 12 ptn.)

HOOFDSTUK I - INLEIDENDE BEGRIPPEN

Het examen scheikunde bestaat uit twee onderdelen (elk 50%), namelijk:

Paradox van zelfreproductie. IN2505-II Berekenbaarheidstheorie. Zelfreproductie? Programma s en zelfreproductie. College 11.

Oefeningenles beeldverwerking

Een formule is een berekening die jij zelf maakt in Excel. Een formule begint met het isgelijkteken en bevat celverwijzingen.

Derde serie opdrachten systeemtheorie

VOORBEREIDINGEN. Les 14

Hoofdstuk 16: Zoek- en verwijzingsfuncties

Aanvulling bij de cursus Calculus 1. Complexe getallen

2. Het benaderen van nulpunten

Inleiding logica Inleveropgave 3

Aanvullingen bij Hoofdstuk 8

Het warmteverlies van het lichaamsoppervlak aan de wordt gegeven door de volgende formule:

Projectieve Vlakken en Codes

De tips & tricks van Jerre Van data naar informatie en terug!

Digitale technieken Deeltoets II

HANDLEIDING scoolplan OUDER

Combinatoriek groep 1 & 2: Recursie

Handleiding aanpassen Cito-excelbestanden

Examen Datastructuren en Algoritmen II

FACULTEIT ECONOMIE EN BEDRIJFSKUNDE Afdeling Kwantitatieve Economie

NUMERIEKE METHODEN VOOR DE VAN DER POL VERGELIJKING. Docent: Karel in t Hout. Studiepunten: 3

Richtlijnen bij het gebruik van het Vief-kasboek

Schriftelijk examen: theorie en oefeningen Fysica: elektromagnetisme

Oefeningenles beeldverwerking

Spreadsheets (Excel 2003)

Wat moet je weten en doen voor een goed examen natuurkunde.

Reeksnr.: Naam: t 2. arcsin x f(t) = 2 dx. 1 x

Samenvatting. Bijlage B

Practicum 1A: Automatisering Plantencentrale

3. Structuren in de taal

Goed aan wiskunde doen

De interface (stuurmodule)

5. Functies. In deze module leert u:

II. ZELFGEDEFINIEERDE FUNCTIES

In het voorgaande artikel werd aangegeven hoe de vaste verdeling van cijfers in getallen, zoals deze voortvloeit

Compex wiskunde A1-2 vwo 2003-I

Richtlijnen bij het gebruik van het Vief-kasboek 4.0

We illustreren deze werkwijze opnieuw a.h.v. de steekproef van de geboortegewichten

Netwerkdiagram voor een project. AOA: Activities On Arrows - activiteiten op de pijlen.

Opmerking: afhankelijk van uw configuratie is de print voorzien van de benodigde componenten.

Leerstofomschrijving proefwerkweek 2 2 basis. Vak. Engels. Lesstof. File 4 Comics. Stofomschrijving

PC les 1: MATLAB gebruiken

Software-Ontwikkeling I Academiejaar

Combinatorische Algoritmen: Binary Decision Diagrams, Deel III

Handleiding BreakEven Calculator Door Thomas Vulsma

8.5 Koppelingen: oefeningen

8.5 Koppelingen: oefeningen

EDK Walkthrough: Hardwareontwerp met GPIO en UART Deel 1

NETWERKEN EN DE WETTEN VAN KIRCHHOFF

Practicumopgave 3: SAT-solver

Informatica: C# WPO 10

SQL Aantekeningen 3. Maarten de Rijke 22 mei 2003

2 Elementaire bewerkingen

Overgangsverschijnselen

Oefenopgaven capaciteitentest

te vermenigvuldigen, waarbij N het aantal geslagen Nederlandse munten en B het aantal geslagen buitenlandse munten zijn. Het resultaat is de vector

2 Elementaire bewerkingen

Examen Datastructuren en Algoritmen II

Hoorcollege Logica. Hans-Dieter A. Hiep

We berekenen nog de effectgrootte aan de hand van formule 4.2 en rapporteren:

Logica voor Informatici najaar 2000 Opgaven en Oplossingen Hoofdstuk 2

Toegepaste data-analyse: sessie 3

Opdracht 1 Topics on Parsing and Formal Languages - fall 2010

ActaLibra Provisiebriefmodellen aanpassen

Richtlijnen bij het gebruik van het KLJ Kasboek 3.0

Deeltoets Digitale technieken

Rekenen aan wortels Werkblad =

Installatie Handleiding Alimentatie Rekendisk Sdu Uitgeverij / A. Koppenaal

Inhoudsopgave Voorwoord 5 Nieuwsbrief 5 Introductie Visual Steps 6 Wat heeft u nodig? 6 Voorkennis 7 Hoe werkt u met dit boek?

Stelsels van vergelijkingen

Opgave 1 Bestudeer de Uitleg, pagina 1. Laat zien dat ook voor punten buiten lijnstuk AB maar wel op lijn AB geldt: x + 3y = 5

In dit project leer je hoe je een spel maakt waarbij je gekleurde stippen moet vangen met het goede deel van de controller.

Module Limieten van de berekenbaarheid : antwoorden

Oefeningen Interpretatie I Reeks 6 : Registermachines

In dit document geven we je een aantal praktische tips voor het gebruik van dit kasboek. In deze uitleg vind je volgende onderdelen:

Excel reader. Beginner Gemiddeld.

Zelftest Inleiding Programmeren

Waarom ga je schrijven? om de directeur te overtuigen. Wat voor tekst schrijf je? een overtuigende tekst. Voorbereiden van je overtuigende tekst

Faculteit Elektrotechniek - Capaciteitsgroep ICS Tentamen Schakeltechniek. Vakcodes 5A010/5A050, 19 januari 2004, 9:00u-12:00u

Eliminatie van parameters en substitutie met computeralgebra

Transcriptie:

Labo IDP In dit labo gaan we IDP gebruiken voor het analyseren van logische circuits. K L A XOR N B XOR P M D AND Q AND C O OR E R R Tuesday 15 December 2009 Figuur 1: Een logisch circuit. Veronderstel dat we het logisch circuit uit Figuur 1 beschrijven met volgende Data-blok: Data: Gate = { A; B; C; D; E } Wire = { K; L; M; N; O; P; Q; R } Output = { A -> N; B -> P; C -> O; D -> Q; E -> R } FirstInput = { A -> K; B -> N; C -> L; D -> M; E -> Q } SecondInput = { A -> L; B -> M; C -> K; D -> N; E -> O } Xor = { A; B} And = { C; D } Or = { E } On = { K; M; N; Q; R } Je kan dit downloaden van op: http://telescript.denayer.wenk.be/ jve/circuit.idp 1

Schrijf het bijhorende Given-blok. Test al eens uit of IDP dit als invoer aanvaart. Voeg dan een Satisfying-blok toe, waarin je beschrijft hoe de tweede invoerlijnen van, respectievelijk, een And-, Xor-, of Or-poort zich verhouden tot de bijhorende uitvoerlijn. Om je op weg te helpen, is hier alvast de beschrijving van een And-poort:!x: And(x) => ( On(FirstInput(x)) & On(SecondInput(x)) <=> On(Output(x)) ). Als je de beschrijving van de andere soorten poorten ook hebt toegevoegd, kan je nu controleren of de beschreven waardes voor de draden van het circuit inderdaad mogelijk zijn. Sla je bestand op als circuit1.idp. 1 Oefening 2 We kunnen IDP ook gebruiken om gegeven de waarden van de invoerlijnen van het hele circuit (K, L en M, in dit geval), de waarde van de andere lijnen te berekenen. Om dit voor elkaar te krijgen, hebben we in de eerste plaats een relatie Input nodig, die aangeeft welke de invoerlijnen precies zijn. Voeg deze toe aan het Given- en het Data-blok. We zouden nu de waarde van de invoerlijnen in het Given-blok moeten zetten, en de waarde van de andere lijnen in het Find-blok. Er is hierbij natuurlijk een probleem: we hebben enkel maar een relatie On die de waarde van alle lijnen beschijft. We kunnen nu wel kiezen of we deze relatie bij Given of bij Find zetten, maar gelijk wat we doen, dit zal nooit helemaal juist zijn, aangezien altijd ofwel de waarde van de invoerlijnen ofwel de waarde van de andere lijnen verkeerd zal staan. Los dit probleem op door het introduceren van een nieuwe relatie InputW ireon, die de toestand van de invoerlijnen van het circuit weergeeft. Wat moet er nu gebeuren met de relatie On die we al hadden? Vanzelfsprekend moet er nog een verband zijn tussen InputW ireon en On: met name, elke draad die een invoerlijn is, mag enkel maar On zijn als hij ook InputW ireon is, en omgekeerd. Druk dit uit in je bestand. Gebruik het resulterende bestand om te berekenen wat de waarde van de andere lijnen zal zijn als enkel de invoerlijnen K en M aan staan (maw. L staat uit). Als alles goed is, zou dit natuurlijk hetzelfde resultaat moeten opleveren als in de vorige oefening. Probeer nu eens te berekenen wat het resultaat zal zijn als enkel L aan staat en ga na dat je effectief het juiste resultaat krijgt. Sla je bestand op als circuit2.idp. 2

2 Oefening 3 In deze oefening gaan we eens kijken naar het probleem van diagnose: om te controleren of het circuit wel correct werkt, voeren we een aantal meetingen uit. Om te beginnen beschouwen we een heel eenvoudig geval, waarbij we een bepaalde invoer aan het circuit geven en dan de toestand van een aantal lijnen meten, met de bedoeling om na te gaan of deze toestand overeenkomt met onze verwachtingen. Hiervoor vertrek je van je bestand uit de vorige opgave, en voeg je hieraan een relatie ObservedOn (de lijnen waarvan er geobserveerd is dat ze aan staan) en een relatie ObservedOf f (de lijnen waarvan er geobserveerd is dat ze uit staan) toe aan het Given-blok. Druk in het Satisfying-blok uit dat de geobserveerde waardes overeenkomen met de waardes die de geobserveerde lijnen zouden moeten hebben. Gebruik nu IDP om na te gaan of het circuit correct werkt als we volgende observaties maken: Invoer: K en L staat aan; M staat uit. Observaties: we observeren dat N uit staat en dat O aan staat. Doe daarna hetzelfde voor een tweede verzameling van observaties: Invoer: K en M staat aan; L staat uit. Observaties: we observeren dat Q uit staat en dat N aan staat. Sla je bestand op als circuit3.idp. 3 Oefening 4 We gaan nu het diagnose probleem iets complexer maken. In plaats van enkel te bepalen of het hele circuit al dan niet goed werkt, willen we nu ook weten welke componenten er mogelijk defect zijn. Voeg een relatie Broken toe aan het Find-blok. In de eerste oefening over deze logische circuits heb je in het Satisfying-blok gedefinieerd wat de waarde van de uitvoerlijn van een poort zou moeten zijn in functie van zijn invoerlijnen. In deze oefening gaan we dit veranderen, en in plaats daarvan bijvoorbeeld zeggen dat: Voor elke And-poort die niet defect is, moet het zo zijn dat zijn uitvoerlijn aan staat als en slechts als zijn twee invoerlijnen aan staan. Pas je formule op deze manier aan en doe hetzelfde met de formules voor Oren Xor-poorten. Neem nu opnieuw de tweede verzameling observaties uit de vorige opgave, dwz.: Invoer: K en M staat aan; L staat uit. 3

Observaties: we observeren dat Q uit staat en dat N aan staat. en kijk wat voor uitvoer IDP produceert. Laat IDP ook eens zoeken naar alle mogelijke oplossingen. Je ziet dat IDP heel veel verschillende diagnoses vindt. Dit is ook logisch, aangezien een defecte component eender welke waarde voor zijn uitvoerlijn kan produceren, en we dus nooit zeker kunnen zijn dat een component niet defect is. Hoewel het resultaat van IDP dus in principe correct is, is het natuurlijk niet zo nuttig. Wat we liever zouden hebben, is dat IDP enkel maar minimale diagnoses zoekt, dwz. dat we enkel maar gaan veronderstellen dat een component defect is, als we effectief observaties hebben die betekenen dat hij niet correct kán werken. Voeg hiervoor de volgende formule toe het Satisfying-blok: Subsetminimize: { x : Broken(x) } Het effect van deze uitdrukking zal zijn dat IDP niet meer alle oplossingen rapporteert, maar enkel nog maar die oplossingen waarin de verzameling {x : Broken(x)} van defecte poorten minimaal is. Met andere woorden, moest er een elementje minder in deze verzameling zitten, dan zou de oplossing geen oplossing meer zijn. Bestudeer het effect van deze uitdrukking op de uitvoer van IDP -n0 en overtuig jezelf ervan dat dit resultaat nu inderdaad veel nuttiger is dan het vorige. Kijk ook eens naar de eerste verzameling van observaties uit de vorige opgave: Invoer: K en L staat aan; M staat uit. Observaties: we observeren dat N uit staat en dat O aan staat. Vergelijk de uitvoer die je krijgt mét de Subsetminimize-uitdrukking met de uitvoer die je krijgt zonder. Begrijp je waarom dit zo is? Sla je bestand op als circuit4.idp. 4 Oefening 5 In de vorige oefening hebben we telkens geprobeerd om een diagnose te stellen aan de hand van één reeks van observaties voor dezelfde invoer. We kunnen natuurlijk ook trachten om meerdere testen uit te voeren en al deze informatie samen te gebruiken om tot een diagnose te komen. Bijvoorbeeld: Test 1 Test 2 Invoer: K aan, L en M uit Observaties: P en R staan aan 4

Test 3 Invoer: L aan, K en M uit Observaties: P en R staan aan Invoer: M aan, K en L uit Observaties: P staat aan en R staat uit Hiervoor zal je een type T est moeten toevoegen, met als elementen: Test = { 1; 2; 3 } Een aantal relaties zullen dan een bijkomend argument van type T est krijgen. Zoek de minimale diagnoses van het circuit, gegeven de drie bovenstaande tests. Hierbij wordt er natuurlijk verondersteld dat de status van een bepaalde poort (dwz. defect of niet defect) dezelfde blijft gedurende al de testen. 5