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.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")
|
||||||
|
|
13
src/trie.py
13
src/trie.py
|
@ -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)
|
||||||
|
|
Reference in a new issue