@@ -9,102 +9,102 @@ def viterbi(
99    emission_probabilities : dict ,
1010) ->  list :
1111    """ 
12-          Viterbi Algorithm, to find the most likely path of 
13-          states from the start and the expected output. 
12+     Viterbi Algorithm, to find the most likely path of 
13+     states from the start and the expected output. 
1414
15-          https://en.wikipedia.org/wiki/Viterbi_algorithm 
15+     https://en.wikipedia.org/wiki/Viterbi_algorithm 
1616
17-          Wikipedia example 
17+     Wikipedia example 
1818
19-          >>> observations = ["normal", "cold", "dizzy"] 
20-          >>> states = ["Healthy", "Fever"] 
21-          >>> start_p = {"Healthy": 0.6, "Fever": 0.4} 
22-          >>> trans_p = { 
23-          ...     "Healthy": {"Healthy": 0.7, "Fever": 0.3}, 
24-          ...     "Fever": {"Healthy": 0.4, "Fever": 0.6}, 
25-          ... } 
26-          >>> emit_p = { 
27-          ...     "Healthy": {"normal": 0.5, "cold": 0.4, "dizzy": 0.1}, 
28-          ...     "Fever": {"normal": 0.1, "cold": 0.3, "dizzy": 0.6}, 
29-          ... } 
30-          >>> viterbi(observations, states, start_p, trans_p, emit_p) 
31-          ['Healthy', 'Healthy', 'Fever'] 
32-          >>> viterbi((), states, start_p, trans_p, emit_p) 
33-          Traceback (most recent call last): 
34-              ... 
35-          ValueError: There's an empty parameter 
36-          >>> viterbi(observations, (), start_p, trans_p, emit_p) 
37-          Traceback (most recent call last): 
38-              ... 
39-          ValueError: There's an empty parameter 
40-          >>> viterbi(observations, states, {}, trans_p, emit_p) 
41-          Traceback (most recent call last): 
42-              ... 
43-          ValueError: There's an empty parameter 
44-          >>> viterbi(observations, states, start_p, {}, emit_p) 
45-          Traceback (most recent call last): 
46-              ... 
47-          ValueError: There's an empty parameter 
48-          >>> viterbi(observations, states, start_p, trans_p, {}) 
49-          Traceback (most recent call last): 
50-              ... 
51-          ValueError: There's an empty parameter 
52-          >>> viterbi("invalid", states, start_p, trans_p, emit_p) 
53-          Traceback (most recent call last): 
54-              ... 
55-          ValueError: observations_space must be a list 
56-          >>> viterbi(["valid", 123], states, start_p, trans_p, emit_p) 
57-          Traceback (most recent call last): 
58-              ... 
59-          ValueError: observations_space must be a list of strings 
60-          >>> viterbi(observations, "invalid", start_p, trans_p, emit_p) 
61-          Traceback (most recent call last): 
62-              ... 
63-          ValueError: states_space must be a list 
64-          >>> viterbi(observations, ["valid", 123], start_p, trans_p, emit_p) 
65-          Traceback (most recent call last): 
66-              ... 
67-          ValueError: states_space must be a list of strings 
68-          >>> viterbi(observations, states, "invalid", trans_p, emit_p) 
69-          Traceback (most recent call last): 
70-              ... 
71-          ValueError: initial_probabilities must be a dict 
72-          >>> viterbi(observations, states, {2:2}, trans_p, emit_p) 
73-          Traceback (most recent call last): 
74-              ... 
75-          ValueError: initial_probabilities all keys must be strings 
76-          >>> viterbi(observations, states, {"a":2}, trans_p, emit_p) 
77-          Traceback (most recent call last): 
78-              ... 
79-          ValueError: initial_probabilities all values must be float 
80-          >>> viterbi(observations, states, start_p, "invalid", emit_p) 
81-          Traceback (most recent call last): 
82-              ... 
83-          ValueError: transition_probabilities must be a dict 
84-          >>> viterbi(observations, states, start_p, {"a":2}, emit_p) 
85-          Traceback (most recent call last): 
86-              ... 
87-          ValueError: transition_probabilities all values must be dict 
88-          >>> viterbi(observations, states, start_p, {2:{2:2}}, emit_p) 
89-          Traceback (most recent call last): 
90-              ... 
91-          ValueError: transition_probabilities all keys must be strings 
92-          >>> viterbi(observations, states, start_p, {"a":{2:2}}, emit_p) 
93-          Traceback (most recent call last): 
94-              ... 
95-          ValueError: transition_probabilities all keys must be strings 
96-          >>> viterbi(observations, states, start_p, {"a":{"b":2}}, emit_p) 
97-          Traceback (most recent call last): 
98-              ... 
99-          ValueError: transition_probabilities nested dictionary all values must be float 
100-          >>> viterbi(observations, states, start_p, trans_p, "invalid") 
101-          Traceback (most recent call last): 
102-              ... 
103-          ValueError: emission_probabilities must be a dict 
104-          >>> viterbi(observations, states, start_p, trans_p, None) 
105-          Traceback (most recent call last): 
106-              ... 
107-          ValueError: There's an empty parameter 
19+     >>> observations = ["normal", "cold", "dizzy"] 
20+     >>> states = ["Healthy", "Fever"] 
21+     >>> start_p = {"Healthy": 0.6, "Fever": 0.4} 
22+     >>> trans_p = { 
23+     ...     "Healthy": {"Healthy": 0.7, "Fever": 0.3}, 
24+     ...     "Fever": {"Healthy": 0.4, "Fever": 0.6}, 
25+     ... } 
26+     >>> emit_p = { 
27+     ...     "Healthy": {"normal": 0.5, "cold": 0.4, "dizzy": 0.1}, 
28+     ...     "Fever": {"normal": 0.1, "cold": 0.3, "dizzy": 0.6}, 
29+     ... } 
30+     >>> viterbi(observations, states, start_p, trans_p, emit_p) 
31+     ['Healthy', 'Healthy', 'Fever'] 
32+     >>> viterbi((), states, start_p, trans_p, emit_p) 
33+     Traceback (most recent call last): 
34+         ... 
35+     ValueError: There's an empty parameter 
36+     >>> viterbi(observations, (), start_p, trans_p, emit_p) 
37+     Traceback (most recent call last): 
38+         ... 
39+     ValueError: There's an empty parameter 
40+     >>> viterbi(observations, states, {}, trans_p, emit_p) 
41+     Traceback (most recent call last): 
42+         ... 
43+     ValueError: There's an empty parameter 
44+     >>> viterbi(observations, states, start_p, {}, emit_p) 
45+     Traceback (most recent call last): 
46+         ... 
47+     ValueError: There's an empty parameter 
48+     >>> viterbi(observations, states, start_p, trans_p, {}) 
49+     Traceback (most recent call last): 
50+         ... 
51+     ValueError: There's an empty parameter 
52+     >>> viterbi("invalid", states, start_p, trans_p, emit_p) 
53+     Traceback (most recent call last): 
54+         ... 
55+     ValueError: observations_space must be a list 
56+     >>> viterbi(["valid", 123], states, start_p, trans_p, emit_p) 
57+     Traceback (most recent call last): 
58+         ... 
59+     ValueError: observations_space must be a list of strings 
60+     >>> viterbi(observations, "invalid", start_p, trans_p, emit_p) 
61+     Traceback (most recent call last): 
62+         ... 
63+     ValueError: states_space must be a list 
64+     >>> viterbi(observations, ["valid", 123], start_p, trans_p, emit_p) 
65+     Traceback (most recent call last): 
66+         ... 
67+     ValueError: states_space must be a list of strings 
68+     >>> viterbi(observations, states, "invalid", trans_p, emit_p) 
69+     Traceback (most recent call last): 
70+         ... 
71+     ValueError: initial_probabilities must be a dict 
72+     >>> viterbi(observations, states, {2:2}, trans_p, emit_p) 
73+     Traceback (most recent call last): 
74+         ... 
75+     ValueError: initial_probabilities all keys must be strings 
76+     >>> viterbi(observations, states, {"a":2}, trans_p, emit_p) 
77+     Traceback (most recent call last): 
78+         ... 
79+     ValueError: initial_probabilities all values must be float 
80+     >>> viterbi(observations, states, start_p, "invalid", emit_p) 
81+     Traceback (most recent call last): 
82+         ... 
83+     ValueError: transition_probabilities must be a dict 
84+     >>> viterbi(observations, states, start_p, {"a":2}, emit_p) 
85+     Traceback (most recent call last): 
86+         ... 
87+     ValueError: transition_probabilities all values must be dict 
88+     >>> viterbi(observations, states, start_p, {2:{2:2}}, emit_p) 
89+     Traceback (most recent call last): 
90+         ... 
91+     ValueError: transition_probabilities all keys must be strings 
92+     >>> viterbi(observations, states, start_p, {"a":{2:2}}, emit_p) 
93+     Traceback (most recent call last): 
94+         ... 
95+     ValueError: transition_probabilities all keys must be strings 
96+     >>> viterbi(observations, states, start_p, {"a":{"b":2}}, emit_p) 
97+     Traceback (most recent call last): 
98+         ... 
99+     ValueError: transition_probabilities nested dictionary all values must be float 
100+     >>> viterbi(observations, states, start_p, trans_p, "invalid") 
101+     Traceback (most recent call last): 
102+         ... 
103+     ValueError: emission_probabilities must be a dict 
104+     >>> viterbi(observations, states, start_p, trans_p, None) 
105+     Traceback (most recent call last): 
106+         ... 
107+     ValueError: There's an empty parameter 
108108
109109    """ 
110110    _validation (
0 commit comments