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.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("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):
"""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
@ -77,8 +77,11 @@ class Trie:
return []
solmu = solmu.lapset[merkki]
#Listaa kaikki alkuosan lapset todennäköisyyden mukaisessa järjestyksessä
vaihtoehdot = []
#Listaa kaikki alkuosan lapset
todennakoisyydet = []
merkit = []
for merkki, lapsi in solmu.lapset.items():
vaihtoehdot.append((lapsi.todennakoisyys, merkki))
return sorted(vaihtoehdot, reverse=True)
todennakoisyydet.append(lapsi.todennakoisyys)
merkit.append(merkki)
return (todennakoisyydet, merkit)