1-2-AX arbetsminnesuppgift
1-2-AX arbetsminnesuppgift | |
---|---|
Syfte | arbetsminnesförmåga hos långtidsminnet |
Arbetsminnesuppgiften 1-2-AX är ett kognitivt test som kräver att arbetsminnet löses.
Det kan användas som ett testfall för att lära sig algoritmer för att testa deras förmåga att komma ihåg gamla data. Denna uppgift kan användas för att demonstrera arbetsminnesförmågan hos algoritmer som PBWM eller långtidsminne .
Beskrivning
Inmatningen av uppgiften är en sekvens av siffrorna/bokstäverna 1 , 2 , A , X , B och Y , och ytterligare distraherande instanser av 3 , C och Z som bör ignoreras. För varje tecken i inmatning i följd måste motivet svara med vänster ( L ) eller höger ( R ).
De två målsekvenser som försökspersonen letar efter är AX och BY . När försökspersonen stöter på en 1 måste de byta till att leta efter AX , och när de stöter på en 2 måste de byta till att leta efter BY .
När personen letar efter AX , om personen stöter på ett X som har sett ett A tidigare (och på liknande sätt för ett Y när han letar efter BY ), och där den föregående bokstaven inte var en del av en tidigare sekvens, svarar de R för att markera slutet på den sekvens; deras svar på alla andra tecken ska vara L .
Exempel
Inmatning | 2 | 1 | A | A | X | X | Y | A | X |
---|---|---|---|---|---|---|---|---|---|
Produktion | L | L | L | L | R | L | L | L | R |
Inmatning | 1 | 2 | A | B | X | Y | A | C | Z |
---|---|---|---|---|---|---|---|---|---|
Produktion | L | L | L | L | L | R | L | L | L |
Krav på algoritmer
För att lösa denna uppgift måste en algoritm både kunna komma ihåg den sista siffran 1 eller 2 och den sista bokstaven A eller B oberoende av varandra. Vi hänvisar till detta minne som arbetsminnet . Detta minne måste bevara all annan inmatning. Dessutom måste algoritmen kunna ta bort och ignorera bokstäverna C och Z .
Lösningar
Pseudokod
För traditionella datormodeller är båda kraven lätta att lösa. Här är lite Python- kod (typ av pseudokod men fungerar) där funktionen next_output får en enda siffra/bokstav som inmatning och returnerar antingen en bokstav eller ingenting. next_outputs är till för att det ska fungera på en hel sekvens.
last_num = "" last_letter = "" def next_output ( next_input : str ) -> str | None : """ Args: next_input: En sträng som innehåller ett enda tecken. Returnerar: En sträng som innehåller bokstäverna "L", "R" eller None. Exempel: >>> next_output("2") 'L' """ global last_num , last_letter if next_input in [ "1" , "2" ]: last_num = next_input sista_bokstav = "" returnera "L" elif next_input i [ "A" , "B" ]: last_letter = next_input returnera "L" elif nästa_input i [ "X" , "Y" ]: seq = last_num + last_letter + next_input sista_bokstav = nästa_input if seq in [ "1AX" , "2BY" ]: return "R" return "L" return None def next_outputs ( next_inputs : str ) -> list [ str ]: """ Args: next_input: En sträng. Returnerar: En lista med strängar som innehåller bokstäverna "L" eller "R". Exempel: >>> next_outputs("21AAXBYAX") ["L" , "L", "L", "L" , "R " , "L", "L", "L", "R"] """ returnerar [ nästa_utgång ( c ) för c i nästa_ingångar ]
Exempel:
>>> nästa_utgångar ( "21AAXBYAX" ) ['L', 'L', 'L', 'L', 'R', 'L', 'L', 'L', 'R'] >>> nästa_utgångar ( "12CBZY" ) ['L', 'L', None, 'L', None, 'R']
Finite-state maskin
På liknande sätt kan denna uppgift lösas på ett enkelt sätt av en finita-tillståndsmaskin med 7 tillstånd (kalla dem --- , 1-- , 2-- , 1A- , 2B- , 1AX , 2BY ).
Neuralt nätverk
Denna uppgift är mycket svårare för neurala nätverk . För enkla neurala nätverk för feedforward är denna uppgift inte lösbar eftersom feedforward-nätverk inte har något arbetsminne. När allt kommer omkring är det en svår uppgift att inkludera arbetsminnet i neurala nätverk. Det har funnits flera tillvägagångssätt som PBWM eller långtidsminne som har arbetsminne. Denna 1-2-AX-uppgift är en bra uppgift för dessa modeller och båda kan lösa uppgiften.