23 svar
307 visningar
Al97i är nöjd med hjälpen
Al97i 39
Postad: 22 apr 2020 15:07 Redigerad: 22 apr 2020 15:09

Konstruera en deterministisk tillståndsmaskin

Hej, jag har en fråga som har att göra med deterministiska tillståndsmaskiner. Jag förstår inte exakt hur man ska utifrån ett given språk bilda maskinen eller tabellen. Frågan lyder:

Konstruera en deterministisk tillståndsmaskin för språket som består av ett jämnt antal a:n följt av ett udda antal b:n . Ange antigen tillståndsmängden, övergångsfunktionen, de accepterande tillstånden och starttillstånden, eller en grafisk representation. 

Jag skulle uppskatta all minska hjälp i det här svåra situationen, tacksam för svar!

Al97i 39
Postad: 22 apr 2020 17:37

kan ingen hjälpa?

Smaragdalena 78608 – Lärare
Postad: 22 apr 2020 18:50
Al97i skrev:

kan ingen hjälpa?

Al97i, det står i Pluggakutens regler att man skall vänta åtminstone 24 timmar innan man bumpar sin tråd. Det står också i reglerna att du skall visa hur du har försökt och hur långt du har kommit. Om du gör detta, har du mycket större chans att få hjälp. Meningen med Pluggakuten äar att du skall få den hjälp du behäver för att kunna lösa din uppgift själv, inte att någon annan skall servera färdiga lösningar på dina problem. /moderator

Al97i 39
Postad: 23 apr 2020 14:34

@smargdalena jag ber om ursäkt om jag skrev för hastigt. Ja, jag har börjat med lösningen, jag tänkte att språket kanske kan vara aabbb (ett jämnt antal a:n, följt av ett udda antal b:n). Men hur tänker jag nu? hur ska jag utifrån det här språket bilda en övergångstabell? 

Laguna Online 28647
Postad: 24 apr 2020 07:18
Al97i skrev:

@smargdalena jag ber om ursäkt om jag skrev för hastigt. Ja, jag har börjat med lösningen, jag tänkte att språket kanske kan vara aabbb (ett jämnt antal a:n, följt av ett udda antal b:n). Men hur tänker jag nu? hur ska jag utifrån det här språket bilda en övergångstabell? 

aabbb är en sträng i språket, men man ska känna igen alla sådana strängar. 

Al97i 39
Postad: 24 apr 2020 09:31
Laguna skrev:
Al97i skrev:

@smargdalena jag ber om ursäkt om jag skrev för hastigt. Ja, jag har börjat med lösningen, jag tänkte att språket kanske kan vara aabbb (ett jämnt antal a:n, följt av ett udda antal b:n). Men hur tänker jag nu? hur ska jag utifrån det här språket bilda en övergångstabell? 

aabbb är en sträng i språket, men man ska känna igen alla sådana strängar. 

 

 

 

 

 

men blir det inte som ett reguljärt uttryck om jag skriver det typ som (aa)*b(bb)*? kan det här anses vara ett språk eller är det ett reguljärt uttryck?

Laguna Online 28647
Postad: 24 apr 2020 13:20
Al97i skrev:
Laguna skrev:
Al97i skrev:

@smargdalena jag ber om ursäkt om jag skrev för hastigt. Ja, jag har börjat med lösningen, jag tänkte att språket kanske kan vara aabbb (ett jämnt antal a:n, följt av ett udda antal b:n). Men hur tänker jag nu? hur ska jag utifrån det här språket bilda en övergångstabell? 

aabbb är en sträng i språket, men man ska känna igen alla sådana strängar. 

 

 

 

 

 

men blir det inte som ett reguljärt uttryck om jag skriver det typ som (aa)*b(bb)*? kan det här anses vara ett språk eller är det ett reguljärt uttryck?

Det är ett reguljärt uttryck. I det här sammanhanget kan man väl säga att det definierar ett språk (helt rätt också). Men nu var det en tillståndsmaskin du skulle göra. 

Moffen 1873
Postad: 24 apr 2020 13:38

Jag tycker att språket verkar vara tvetydigt. "språket som består av ett jämnt antal a:n följt av ett udda antal b:n". Ska det alltså vara ett udda antal b:n efter varje delsträng med a:n eller ska det vara ett udda antal b:n totalt efter första delsträngen innehållandes ett jämnt antal a:n?

Ex. tillhör strängen aabaab språket? (efter första "aa" har vi totalt 2 stycken b:n, vilket inte är ett udda antal).

Al97i 39
Postad: 24 apr 2020 15:29

hur ska jag utifrån det här språket( (aa)*b(bb)*) avgöra hur många tillstånd maskinen ska innehålla?

@moffen men det blir ju alltid udda antal b:n eftersom vi har ett b utan för parantesen också

Moffen 1873
Postad: 24 apr 2020 17:41
Al97i skrev:

hur ska jag utifrån det här språket( (aa)*b(bb)*) avgöra hur många tillstånd maskinen ska innehålla?

@moffen men det blir ju alltid udda antal b:n eftersom vi har ett b utan för parantesen också

I ditt reguljära uttryck ja, men vad är egentligen språket i uppgiften? Det var det jag undrade över.

Al97i 39
Postad: 24 apr 2020 17:45

språket kan ju beskrivas av det reguljära uttrycket, då det reguljära uttrycket är språket som innehåller alla ord som består av ett jämnt antal a:n följt av ett udda antal b:n.

Moffen 1873
Postad: 24 apr 2020 17:50
Al97i skrev:

språket kan ju beskrivas av det reguljära uttrycket, då det reguljära uttrycket är språket som innehåller alla ord som består av ett jämnt antal a:n följt av ett udda antal b:n.

Nu skriver du ju bara av uppgiftstexten. Jag tycker att den är tvetydig på grund av vad jag skrev i mitt första inlägg. Men om vi antar att ditt reguljära uttryck beskriver språket, kan du ta fram en DFA för språket? Har du koll på hur en DFA fungerar? Visa hur du tänker/dina försök. Du kan göra en grafisk representation om du vill, det är tydligast tycker jag.

Al97i 39
Postad: 24 apr 2020 18:01

Jag har precis börjat läsa om DFA, därför jag lite osäker. Men jag kan lägga ut bild på min lösning, inte är säker om den är rätt

Moffen 1873
Postad: 24 apr 2020 18:39

Tyvärr stämmer det inte riktigt, kan du se att din DFA exempelvis accepterar strängen "ab"? Det måste vara ett jämnt antal a:n, och det är det ju inte i strängen "ab". Testa att redigera den lite grann och lägg in bild igen :)

Laguna Online 28647
Postad: 24 apr 2020 20:47

Det finns en startpil men det borde finnas en slutpil också. 

Al97i 39
Postad: 26 apr 2020 12:29

Jag hoppas det här är rätt

Laguna Online 28647
Postad: 26 apr 2020 12:37 Redigerad: 26 apr 2020 12:40

Från 1 går man om man får aa eller b. Vad gör man om man får ab?

Edit: tja, då matchar man väl inte. Men om man har fått a så är man i ett mellantillstånd som du inte har visat. Tänk så att du bara behandlar en insymbol i taget. 

Al97i 39
Postad: 26 apr 2020 12:41

Det går väl inte om man får ab, det är 2 a. Eller tänker jag fel?

Laguna Online 28647
Postad: 26 apr 2020 12:42
Al97i skrev:

Det går väl inte om man får ab, det är 2 a. Eller tänker jag fel?

Du hann nog svara innan jag lade till lite mer text. 

Al97i 39
Postad: 26 apr 2020 15:59

Är min lösning fel? 

Laguna Online 28647
Postad: 26 apr 2020 18:06

Jag skulle vilja att man behandlar bara en insymbol i taget, så att man kan överföra alla tillstånd till ett datorprogram utan några dolda tillstånd, men jag vet inte vad din lärobok säger.

Al97i 39
Postad: 26 apr 2020 18:13

i exemplena i boken finns det också bara en insymbol eller två insymboler av två olika alfabet och inte av samma som i min. Men det känns som att det jag har ritat är rätt logiskt om man testar, jag är lite osäker hur det skulle se ut med bara en insymbol. 

Moffen 1873
Postad: 28 apr 2020 17:02

Det är inte korrekt. En DFA får högst läsa ett tecken per tillståndsövergång och det måste finnas en tillståndsövergång för varje tecken i alfabetet (dvs i ditt tillstånd 2 måste det finnas en pil för a också). Som jag tidigare nämnt tycker jag att språket är tvetydigt, men nu förutsätter jag att vi kör på språket "Jämnt antal a:n som sedan följs av udda antal b:n, där ingen delsträng börjar på b och slutar på a". 

Du får antagligen försöka dela upp det i olika fall:

1. Vi läser ett a -> vi måste läsa ett till a (som ditt "fusk" med att läsa aa i din grafiska representation (då blir det en NFA)). 

2. Vi läser ett b -> vi får inte läsa fler a (men får såklart läsa fler b:n men antalet b:n måste komma i par...)

3. Vi läser ett b efter ett a -> ...

4. Vi läser ett b efter udda antal a -> ...

5. Vi läser ett a efter ett b -> ...

.

.

.

Försök rita lite och se om du får till något. Ovanstående behöver såklart inte vara disjunkta, men idéer. Dela med dig av dina tankegångar och försök. 

Al97i 39
Postad: 2 maj 2020 12:50

Tack för hjälpen!

Svara Avbryt
Close