Muuta trie tukemaan Markovin ketjuja paremmin
This commit is contained in:
parent
9d12ebf141
commit
d956305fb0
2 changed files with 16 additions and 8 deletions
|
@ -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")
|
||||
|
|
13
src/trie.py
13
src/trie.py
|
@ -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)
|
||||
|
|
Reference in a new issue