1
0
Fork 0

Muuta trie tukemaan Markovin ketjuja paremmin

This commit is contained in:
Vili Sinervä 2022-09-22 09:15:32 +03:00
parent 9d12ebf141
commit d956305fb0
2 changed files with 16 additions and 8 deletions

View file

@ -24,8 +24,13 @@ class TestTrie(unittest.TestCase):
self.assertFalse(self.trie.etsi_seuraavat("AB")) self.assertFalse(self.trie.etsi_seuraavat("AB"))
self.trie.lisaa("ABC") self.trie.lisaa("ABC")
self.trie.lisaa("ABC") self.trie.lisaa("ABC")
self.assertEqual(self.trie.etsi_seuraavat("AB"), [(1, "C")]) self.assertEqual(self.trie.etsi_seuraavat("AB"), ([1], ["C"]))
self.trie.lisaa("ABC") self.trie.lisaa("ABC")
self.trie.lisaa("ABD") self.trie.lisaa("ABD")
self.assertEqual(self.trie.etsi_seuraavat("AB"), [(0.75, "C"), (0.25, "D")])
self.assertEqual(self.trie.etsi_seuraavat("AB"), [(0.75, "C"), (0.25, "D")]) todennakoisyydet, merkit = self.trie.etsi_seuraavat("AB")
#Tällä saadaan järjestetty lista merkkejä ja todennäköisyyksiä, joka helpottaa testaamista
lista = sorted(zip(todennakoisyydet, merkit), reverse=True)
self.assertEqual(lista, [(0.75, "C"), (0.25, "D")])
todennakoisyydet, merkit = self.trie.etsi_seuraavat("AB")

View file

@ -63,7 +63,7 @@ class Trie:
def etsi_seuraavat(self, alkuosa): def etsi_seuraavat(self, alkuosa):
"""Etsi alkuosaan sopivat viimeiset merkit ja niiden todennäköisyydet. """Etsi alkuosaan sopivat viimeiset merkit ja niiden todennäköisyydet.
Palauttaa listan tupleja (tod., merkki) järjestettynä todennäköisyyden mukaan. Palauttaa tuplen listoja (tod., merkit).
""" """
#Funktion sisällä tarkistetaan onko laskenta tarpeellista #Funktion sisällä tarkistetaan onko laskenta tarpeellista
@ -77,8 +77,11 @@ class Trie:
return [] return []
solmu = solmu.lapset[merkki] solmu = solmu.lapset[merkki]
#Listaa kaikki alkuosan lapset todennäköisyyden mukaisessa järjestyksessä #Listaa kaikki alkuosan lapset
vaihtoehdot = [] todennakoisyydet = []
merkit = []
for merkki, lapsi in solmu.lapset.items(): for merkki, lapsi in solmu.lapset.items():
vaihtoehdot.append((lapsi.todennakoisyys, merkki)) todennakoisyydet.append(lapsi.todennakoisyys)
return sorted(vaihtoehdot, reverse=True) merkit.append(merkki)
return (todennakoisyydet, merkit)