विटर्बी एल्गोरिदम

विटर्बी कलन विधि छिपे हुए स्थान के सबसे अधिक संभावना वाले फलन अनुक्रम का अधिकतम पोस्टीरियर अनुमान प्राप्त करने के लिए गतिशील प्रोग्रामिंग एल्गोरिदम है - जिसे विटरबी पथ कहा जाता है - जिसके परिणामस्वरूप देखी गई घटनाओं का अनुक्रम होता है,विशेष रूप से मार्कोव सूचना स्त्रोतों और छिपे हुए मार्कोव के संदर्भ में मॉडल (एचएमएम) होता है।

एल्गोरिदम ने सीडीएमए और जीएसएम डिजिटल सेल्युलर, डायल -अप मॉडेम, सैटेलाइट, डीप-स्पेस संचार और 802.11 वायरलेस लैन दोनों में उपयोग किए जाने वाले कन्वोल्यूशनल कोड को डिकोड करने में सार्वभौमिक अनुप्रयोग पाया जाता है। अब इसका उपयोग सामान्यतः वाक् पहचान, वाक् संश्लेषण, डायरीकरण, कीवर्ड स्पॉटिंग, कम्प्यूटेशनल भाषाविज्ञान, और जैव सूचना विज्ञान में भी किया जाता है। उदाहरण के लिए, वाक्-से-पाठ (वाक् पहचान) में, ध्वनिक संकेत को घटनाओं के देखे गए अनुक्रम के रूप में माना जाता है, और पाठ की शृंखला को ध्वनिक संकेत का छिपा हुआ कारण माना जाता है। विटरबी एल्गोरिदम ध्वनिक संकेत दिए जाने पर पाठ की सबसे संभावित शृंखला ढूंढता है।

इतिहास
विटर्बी एल्गोरिदम का नाम एंड्रयू विटेर्बी के नाम पर रखा गया है, जिन्होंने 1967 में इसे ध्वनि वाले डिजिटल संचार लिंक पर कनवल्शन कोड के लिए डिकोडिंग एल्गोरिदम के रूप में प्रस्तावित किया था। चूँकि, इसमें अनेक आविष्कारों का इतिहास है, जिसमें कम से कम सात स्वतंत्र खोजें सम्मिलित हैं, जिनमें विटर्बी, नीडलमैन-वुन्श एल्गोरिदम और वैगनर-फिशर एल्गोरिदम सम्मिलित हैं। इसे 1987 की प्रारंभ में भाषण का भाग टैगिंग की विधि के रूप में प्राकृतिक भाषा प्रसंस्करण में प्रस्तुत किया गया था।

संभावनाओं से जुड़ी समस्याओं को अधिकतम करने के लिए गतिशील प्रोग्रामिंग एल्गोरिदम के अनुप्रयोग के लिए विटर्बी पथ और विटरबी एल्गोरिदम मानक शब्द बन गए हैं। उदाहरण के लिए, सांख्यिकीय पार्सिंग में शृंखला के एकल सबसे संभावित संदर्भ-मुक्त व्युत्पत्ति (पार्स) की खोज के लिए गतिशील प्रोग्रामिंग एल्गोरिदम का उपयोग किया जा सकता है, जिसे सामान्यतः विटर्बी पार्स कहा जाता है।  अन्य अनुप्रयोग ऑप्टिकल मोशन ट्रैकिंग में है, जहां ट्रैक की गणना की जाती है जो अवलोकनों के अनुक्रम को अधिकतम संभावना प्रदान करता है।

एक्सटेंशन
विटरबी एल्गोरिदम का सामान्यीकरण, जिसे अधिकतम-योग एल्गोरिदम (या अधिकतम-उत्पाद एल्गोरिदम) कहा जाता है, इसका उपयोग बड़ी संख्या में चित्रमय मॉडल में सभी या कुछ अव्यक्त चर के सब समुच्चय के सबसे संभावित असाइनमेंट को खोजने के लिए किया जा सकता है, उदाहरण के लिए बायेसियन नेटवर्क, मार्कोव यादृच्छिक क्षेत्र और सशर्त यादृच्छिक क्षेत्र होता हैं। सामान्यतः, अव्यक्त वैरिएबल को कुछ सीमा तक छिपे हुए मार्कोव मॉडल (एचएमएम) के समान कनेक्ट करने की आवश्यकता होती है, जिसमें वैरिएबल और वैरिएबल के मध्य कुछ प्रकार की रैखिक संरचना के मध्य सीमित संख्या में कनेक्शन होते हैं। सामान्य एल्गोरिदम में संदेश भेजना सम्मिलित है और यह अधिक सीमा तक विश्वास प्रसार एल्गोरिदम (जो आगे-पीछे एल्गोरिदम का सामान्यीकरण है) के समान होता है

पुनरावृत्त विटरबी डिकोडिंग नामक एल्गोरिदम के साथ कोई भी अवलोकन के परिणाम को प्राप्त सकता है जो किसी दिए गए छिपे हुए मार्कोव मॉडल से सबसे अच्छा (औसतन) मेल खाता है। यह एल्गोरिदम Qi वांग एट अल द्वारा प्रस्तावित होता है। टर्बो कोड से निपटने के लिए. पुनरावृत्तीय विटरबी डिकोडिंग संशोधित विटरबी एल्गोरिदम को पुनरावृत्त रूप से प्रयुक्त करके काम करता है, अभिसरण तक भराव के लिए स्कोर का पुनर्मूल्यांकन करता है।

एक वैकल्पिक एल्गोरिथम, लेज़ी विटर्बी एल्गोरिदम प्रस्तावित किया गया है। व्यावहारिक रुचि के अनेक अनुप्रयोगों के लिए, उचित ध्वनि स्थितियों के अनुसार, लेज़ी डिकोडर (लेज़ी विटर्बी एल्गोरिदम का उपयोग करके) मूल विटर्बी डिकोडर (विटरबी एल्गोरिदम का उपयोग करके) की तुलना में बहुत तेज़ होता है। जबकि मूल विटरबी एल्गोरिदम संभावित परिणामों के ट्रेलिस (ग्राफ) में प्रत्येक नोड की गणना करता है, लेज़ी विटरबी एल्गोरिदम क्रम में मूल्यांकन करने के लिए नोड्स की प्राथमिकता वाली सूची बनाए रखता है, और आवश्यक गणना की संख्या सामान्यतः सामान्य विटरबी एल्गोरिदम की तुलना में कम (और कभी अधिक नहीं) होती है वही समान परिणाम चूँकि, हार्डवेयर में समानांतरीकरण करना यह इतना आसान [स्पष्टीकरण आवश्यक] नहीं है|

स्यूडोकोड
यह एल्गोरिथम पथ $$ X=(x_1,x_2,\ldots,x_T) $$ उत्पन्न करता है जो स्थान $$x_n \in S=\{s_1,s_2,\dots,s_K\}$$ का अनुक्रम है जो $$y_n \in O=\{o_1,o_2,\dots,o_N\}$$ के साथ अवलोकन $$ Y=(y_1,y_2,\ldots, y_T) $$ उत्पन्न करते हैं, जहाँ $$N$$ अवलोकन स्थान $$O$$ में संभावित अवलोकनों की संख्या है.

$$K \times T$$ आकार की दो 2-आयामी तालिकाएँ निर्मित हैं:
 * $$T_1$$प्रत्येक तत्व $$T_1[i,j]$$ का अब तक के सबसे संभावित पथ $$ \hat{X}=(\hat{x}_1,\hat{x}_2,\ldots,\hat{x}_j) $$ की संभावना को $$\hat{x}_j=s_i $$ के साथ संग्रहीत करता है जो $$ Y=(y_1,y_2,\ldots, y_j)$$ उत्पन्न करता है|
 * $$T_2 $$ में से प्रत्येक तत्व $$T_2[i,j] $$ अब तक के सबसे संभावित पथ के $$\hat{x}_{j-1} $$ को संगृहीत करता हैं $$ \hat{X}=(\hat{x}_1,\hat{x}_2,\ldots,\hat{x}_{j-1},\hat{x}_j = s_i)$$ $$\forall j, 2\leq j \leq T $$ तालिका प्रविष्टियाँ $$ T_1[i,j],T_2[i,j]$$ $$K\cdot j+i $$ के बढ़ते क्रम से भरे जाते हैं |
 * $$T_1[i,j]=\max_{k}{(T_1[k,j-1]\cdot A_{ki}\cdot B_{iy_j})} $$,
 * $$T_2[i,j]=\operatorname{argmax}_{k}{(T_1[k,j-1]\cdot A_{ki} \cdot B_{iy_j})} $$,

साथ जैसा कि नीचे परिभाषित हैं $$A_{ki}$$ और $$B_{iy_j}$$ के साथ किया गया है। ध्यान दें कि $$B_{iy_j}$$ इसके पश्चात् कीअभिव्यक्ति में प्रकट होने की आवश्यकता नहीं है, क्योंकि यह गैर-नकारात्मक हैं और $$k$$ स्वतंत्र है और इस प्रकार यह argmax को प्रभावित नहीं करता है।

इनपुट
 * अवलोकन स्थान $$ O=\{o_1,o_2,\dots,o_N\}$$,
 * अवस्था स्थान $$ S=\{s_1,s_2,\dots,s_K\} $$,
 * प्रारंभिक संभावनाओं की श्रृंखला $$ \Pi = (\pi_1,\pi_2,\dots,\pi_K)$$ ऐसा है कि $$ \pi_i $$ इसकी संभावना को संग्रहीत करता है कि $$ x_1 = s_i $$,
 * अवलोकनों का क्रम $$ Y=(y_1,y_2,\ldots, y_T) $$इस प्रकार हैं कि $$ y_t=o_i $$ यदि समय $$ t $$ पर अवलोकन $$ o_i $$ है $$ o_i $$,
 * स्टोकेस्टिक मैट्रिक्स आकार $$ K\times K $$ का संक्रमण संभावना $$ A $$ ऐसा है कि $$ A_{ij} $$ स्थान $$ s_i $$ से स्थान $$ s_j $$तक पारगमन की को संग्रहीत करता है
 * हिडन मार्कोव मॉडल आकार $$ K\times N $$ का उत्सर्जन मैट्रिक्स $$ B $$ ऐसा है कि $$ B_{ij} $$ स्थान $$ s_i $$से $$ o_j $$ देखने की संभावना संग्रहीत करता है।


 * आउटपुट
 * सबसे संभावित छिपा हुआ अवस्था क्रम $$ X=(x_1,x_2,\ldots,x_T) $$

फलन VITERBI$$(O,S,\Pi,Y,A,B):X$$

प्रत्येक स्थान के लिए $$i=1,2,\ldots,K$$ करना $$T_1[i,1]\leftarrow\pi_i\cdot B_{iy_1}$$ $$T_2[i,1]\leftarrow 0$$ के लिए समाप्त प्रत्येक अवलोकन के लिए $$j = 2,3,\ldots,T$$ करना प्रत्येक स्थान के लिए $$i =1,2,\ldots,K$$ करना $T_1[i,j] \gets \max_{k}{(T_1[k,j-1]\cdot A_{ki} \cdot B_{iy_j})} $ $T_2[i,j] \gets \arg\max_{k}{(T_1[k,j-1]\cdot A_{ki} \cdot B_{iy_j}) } $ के लिए समाप्त के लिए समाप्त $z_T \gets \arg\max_{k}{(T_1[k,T])} $ $$x_T\leftarrow s_{z_T}$$

के लिए $$j=T,T-1,\ldots,2$$ करना

$$z_{j-1}\leftarrow T_2[z_j,j]$$ $$x_{j-1}\leftarrow s_{z_{j-1}}$$ के लिए समाप्त वापस करना $$X$$ अंत फलन

पाइथॉन (प्रोग्रामिंग भाषा) के निकट संक्षिप्त रूप में पुन: प्रस्तुत: फलन विटरबी$$(O, S, \Pi, Tm, Em): best\_path$$ टीएम: संक्रमण मैट्रिक्स एम: उत्सर्जन मैट्रिक्स $$trellis \leftarrow matrix(length(S), length(O))$$ प्रत्येक अवलोकन को देखते हुए प्रत्येक स्थिति की संभाव्यता बनाए रखना $$pointers \leftarrow matrix(length(S), length(O))$$ बैकपॉइंटर को सर्वोत्तम पूर्व स्थिति में रखने के लिए एस इन के लिए $$range(length(S))$$: समय 0 पर प्रत्येक छिपी हुई स्थिति की संभावना निर्धारित करें… $$trellis[s, 0] \leftarrow \Pi[s] \cdot Em[s, O[0]]$$ ओ इन के लिए $$range(1, length(O))$$: ...और उसके पश्चात्, प्रत्येक स्थान की सबसे संभावित पूर्व स्थिति पर नज़र रखते हुए, k    एस इन के लिए $$range(length(S))$$: $$k \leftarrow \arg\max(trellis[k, o-1] \cdot Tm[k, s] \cdot Em[s, o]\ \mathsf{for}\ k\ \mathsf{in}\ range(length(S)))$$ $$trellis[s, o] \leftarrow trellis[k, o-1] \cdot Tm[k, s] \cdot Em[s, o]$$ $$pointers[s, o] \leftarrow k$$ $$best\_path \leftarrow list$$ $$k \leftarrow \arg\max(trellis[k, length(O)-1]\ \mathsf{for}\ k\ \mathsf{in}\ range(length(S)))$$ सर्वोत्तम अंतिम स्थिति का k ज्ञात करें ओ इन के लिए $$range(length(O)-1, -1, -1)$$: पिछले अवलोकन से पीछे हटें $$best\_path.insert(0, S[k])$$ सबसे संभावित पथ पर पिछली स्थिति डालें $$k \leftarrow pointers[k, o]$$ सर्वोत्तम पिछली स्थिति खोजने के लिए बैकपॉइंटर का उपयोग करें वापस करना $$best\_path$$ मान लीजिए हमें अवस्था स्थान $$S$$ के साथ छिपा हुआ मार्कोव मॉडल (एचएमएम) दिया गया है ,स्थान $$i$$ में होने का प्रारंभिक संभावनाएँ $$\pi_i$$और स्थान $$i$$ से स्थान $$j$$ में संक्रमण की संभावनाएँ $$a_{i,j}$$ हैं मान लीजिए हम आउटपुट $$y_1,\dots, y_T$$,$$x_1,\dots,x_T$$ देखते हैं सबसे संभावित स्थिति अनुक्रम जो अवलोकन उत्पन्न करता है, पुनरावृत्ति संबंधों द्वारा दिया गया है
 * व्याख्या
 * व्याख्या



\begin{align} V_{1,k} &= \mathrm{P}\big( y_1 \ | \ k \big) \cdot \pi_k, \\ V_{t,k} &= \max_{x \in S} \left( \mathrm{P}\big( y_t \ | \ k \big) \cdot a_{x,k} \cdot V_{t-1,x}\right). \end{align} $$ यहाँ $$V_{t,k}$$ सबसे संभावित स्थिति अनुक्रम की संभावना है $$\mathrm{P}\big(x_1,\dots,x_t,y_1,\dots, y_t\big)$$जो पहले $$t$$ अवलोकन के लिए जिम्मेदार हैं जिसकी अंतिम अवस्था $$k$$ हैं विटर्बी पथ को बैक पॉइंटर्स को सहेजकर पुनः प्राप्त किया जा सकता है जो याद रखता है कि दूसरे समीकरण में किस स्थिति $$x$$ का उपयोग किया गया था। मानलीजिए $$\mathrm{Ptr}(k,t)$$ वह फलन है जो $$x$$ का मान लौटाता है जिसका उपयोग $$V_{t,k}$$ की गणना करने के लिए किया जाता है यदि $$t > 1$$ या $$k$$ यदि $$t=1$$ हैं तब



\begin{align} x_T &= \arg\max_{x \in S} (V_{T,x}), \\ x_{t-1} &= \mathrm{Ptr}(x_t,t). \end{align} $$ यहां हम आर्ग मैक्स की मानक परिभाषा का उपयोग कर रहे हैं।

इस कार्यान्वयन की जटिलता है $$O(T\times\left|{S}\right|^2)$$ है| उत्तम अनुमान तब उपस्थित होता है जब आंतरिक लूप में अधिकतम केवल उन स्थान पर पुनरावृत्ति करके पाया जाता है जो सीधे वर्तमान स्थिति से जुड़े होते हैं अर्थात $$k$$ से $$j$$ तक बढ़त होती है फिर अमूर्त विश्लेषण का उपयोग करके कोई यह दिखा सकता है कि जटिलता $$O(T\times(\left|{S}\right| + \left|{E}\right|))$$ है, जहाँ $$E$$ ग्राफ़ में किनारों की संख्या होती है.|

उदाहरण
ऐसे गांव पर विचार करें जहां सभी ग्रामीण या मध्य स्वस्थ हैं या उन्हें ज्वर है, और केवल गांव का डॉक्टर ही यह निर्धारित कर सकता है कि प्रत्येक को ज्वर है या नहीं। डॉक्टर रोगीों से यह पूछकर ज्वर का निदान करते हैं कि उन्हें कैसी अनुभूतिि हो रही है। ग्रामीण केवल यही उत्तर दे सकते हैं कि उन्हें सामान्य, चक्कर या ठंड लग रही है।

डॉक्टर का मानना ​​है कि रोगी की स्वास्थ्य स्थिति अलग मार्कोव श्रृंखला के रूप में संचालित होती है। दो अवस्थाएँ हैं, "स्वस्थ" और ज्वर,", किन्तु डॉक्टर उनका सीधे निरीक्षण नहीं कर सकते; वे डॉक्टर से छिपे हुए हैं। प्रत्येक दिन, इस बात की निश्चित संभावना होती है कि रोगी डॉक्टर को बताएगा कि "मुझे सामान्य अनुभूतिि हो रही है", "मुझे ठंड लग रही है", या "मुझे चक्कर आ रहा है", यह रोगी की स्वास्थ्य स्थिति पर निर्भर करता है।

छिपी हुई स्थिति (स्वस्थ, ज्वर) के साथ अवलोकन (सामान्य, सर्दी, चक्कर आना) छिपे हुए मार्कोव मॉडल (एचएमएम) का निर्माण करते हैं, और इसे पायथन (प्रोग्रामिंग भाषा) में निम्नानुसार दर्शाया जा सकता है: कोड के इस टुकड़े में,  डॉक्टर के इस विश्वास का प्रतिनिधित्व करता है कि जब रोगी पहली बार आता है तब मध्य एचएमएम किस स्थिति में होता है (डॉक्टर केवल इतना जानता है कि रोगी स्वस्थ है)। यहां प्रयुक्त विशेष संभाव्यता वितरण संतुलन वितरण नहीं है, जो (संक्रमण संभावनाओं को देखते हुए) लगभग. हैं|  e> अंतर्निहित मार्कोव श्रृंखला में स्वास्थ्य स्थिति में परिवर्तन का प्रतिनिधित्व करता है। इस उदाहरण में, रोगी जो आज स्वस्थ है, उसे कल ज्वर होने की केवल 30% संभावना है।   ई> दर्शाता है कि अंतर्निहित स्थिति (स्वस्थ या ज्वर) को देखते हुए, प्रत्येक संभावित अवलोकन (सामान्य, सर्दी, या चक्कर आना) की कितनी संभावना है। रोगी जो स्वस्थ है उसके सामान्य अनुभूतिि करने की 50% संभावना है; जिस व्यक्ति को ज्वर है उसे चक्कर आने की संभावना 60% है।

एक रोगी लगातार तीन दिन दौरा करता है, और डॉक्टर को पता चलता है कि रोगी को पहले दिन सामान्य अनुभूति होती है, दूसरे दिन ठंड लगती है, और तीसरे दिन चक्कर आता है। डॉक्टर का प्रश्न है: रोगी की स्वास्थ्य स्थितियों का सबसे संभावित क्रम क्या है जो इन टिप्पणियों की व्याख्या करेगा? इसका उत्तर विटर्बी एल्गोरिथम द्वारा दिया गया है।

इससे पता चलता है कि अवलोकन  संभवतः स्थान. द्वारा उत्पन्न किए गए थे दूसरे शब्दों में, देखी गई गतिविधियों को देखते हुए, रोगी के पहले दिन और दूसरे दिन भी स्वस्थ रहने की संभावना थी (उस दिन ठंड अनुभूति होने के अतिरिक्त), और केवल तीसरे दिन ज्वर होने की संभावना थी।

विटर्बी के एल्गोरिदम के संचालन को इसके लिस आरेख के माध्यम से देखा जा सकता है। विटर्बी पथ अनिवार्य रूप से इस जाली के माध्यम से सबसे छोटा रास्ता है।

सॉफ्ट आउटपुट विटर्बी एल्गोरिदम
सॉफ्ट आउटपुट विटर्बी एल्गोरिदम (सोवा) क्लासिकल विटर्बी एल्गोरिदम का प्रकार होता है।

सोवा मौलिक विटरबी एल्गोरिदम से इस मायने में भिन्न है कि यह संशोधित पथ मीट्रिक का उपयोग करता है जो इनपुट प्रतीकों की प्राथमिक संभावनाओं को ध्यान में रखता है, और निर्णय की विश्वसनीयता को संकेत करने वाला नरम आउटपुट उत्पन्न करता है।

सोवा में पहला कदम उत्तरजीवी पथ का चयन करना है, जो प्रत्येक समय तत्काल अद्वितीय नोड, t से होकर गुजरता है। चूँकि प्रत्येक नोड में 2 शाखाएँ एकत्रित होती हैं (एक शाखा को सर्वाइवर पाथ बनाने के लिए चुना जाता है, और दूसरी को छोड़ दिया जाता है), चुनी गई और छोड़ी गई शाखाओं के मध्य शाखा आव्युह (या निवेश) में अंतर त्रुटि की मात्रा को दर्शाता है। विकल्प।

विटर्बी एल्गोरिदम के हार्ड बिट निर्णय की विश्वसनीयता के नरम आउटपुट माप को इंगित करने के लिए, यह निवेश पूरी स्लाइडिंग विंडो (सामान्यतः कम से कम पांच बाधा लंबाई के बराबर) पर जमा होती है।

यह भी देखें

 * अपेक्षा-अधिकतमीकरण एल्गोरिथ्म
 * बॉम-वेल्च एल्गोरिथम
 * फॉरवर्ड-बैकवर्ड एल्गोरिथम
 * अग्रेषित एल्गोरिथ्म
 * त्रुटि-सुधार कोड
 * विटर्बी डिकोडर
 * हिडन मार्कोव मॉडल
 * पार्टऑफ़ स्पीच टैगिंग
 * ए* खोज एल्गोरिदम

सामान्य संदर्भ

 * (नोट: विटर्बी डिकोडिंग एल्गोरिदम अनुभाग IV में वर्णित है।) सदस्यता आवश्यक है।
 * सदस्यता आवश्यक है.
 * (एचएमएम के लिए फॉरवर्ड एल्गोरिदम और विटर्बी एल्गोरिदम का वर्णन करता है)।
 * शिंगल, आर. और गॉडफ्राइड टूसेंट|गॉडफ्राइड टी. टूसेंट, संशोधित विटरबी एल्गोरिदम के साथ पाठ पहचान में प्रयोग, पैटर्न विश्लेषण और मशीन इंटेलिजेंस पर आईईईई लेनदेन, वॉल्यूम। पीएएमआई-एल, अप्रैल 1979, पृ. 184-193।
 * शिंगल, आर. और गॉडफ्राइड टूसेंट|गॉडफ्राइड टी. टूसेंट, स्रोत सांख्यिकी के लिए संशोधित विटर्बी एल्गोरिदम की संवेदनशीलता, पैटर्न विश्लेषण और मशीन इंटेलिजेंस पर आईईईई लेनदेन, वॉल्यूम। पीएएमआई-2, मार्च 1980, पृ. 181-185।
 * शिंगल, आर. और गॉडफ्राइड टूसेंट|गॉडफ्राइड टी. टूसेंट, संशोधित विटरबी एल्गोरिदम के साथ पाठ पहचान में प्रयोग, पैटर्न विश्लेषण और मशीन इंटेलिजेंस पर आईईईई लेनदेन, वॉल्यूम। पीएएमआई-एल, अप्रैल 1979, पृ. 184-193।
 * शिंगल, आर. और गॉडफ्राइड टूसेंट|गॉडफ्राइड टी. टूसेंट, स्रोत सांख्यिकी के लिए संशोधित विटर्बी एल्गोरिदम की संवेदनशीलता, पैटर्न विश्लेषण और मशीन इंटेलिजेंस पर आईईईई लेनदेन, वॉल्यूम। पीएएमआई-2, मार्च 1980, पृ. 181-185।

बाहरी संबंध

 * Implementations in Java, F#, Clojure, C# on Wikibooks
 * Tutorial on convolutional coding with viterbi decoding, by Chip Fleming
 * A tutorial for a Hidden Markov Model toolkit (implemented in C) that contains a description of the Viterbi algorithm
 * Viterbi algorithm by Dr. Andrew J. Viterbi (scholarpedia.org).

कार्यान्वयन

 * Mathematica में स्टोकेस्टिक प्रक्रियाओं के समर्थन के हिस्से के रूप में कार्यान्वयन है
 * Susa सिग्नल प्रोसेसिंग फ्रेमवर्क आगे त्रुटि सुधार कोड और चैनल इक्वलाइजेशन के लिए C++ कार्यान्वयन प्रदान करता है ज यहाँ.
 * C++
 * C#
 * जावा
 * जावा 8
 * जूलिया (HMMBase.jl)
 * पर्ल
 * प्रोलॉग
 * हास्केल
 * जाओ
 * SFIHMM में विटरबी डिकोडिंग के लिए कोड सम्मिलित है।

श्रेणी:त्रुटि का पता लगाना और सुधार करना श्रेणी:गतिशील प्रोग्रामिंग श्रेणी:मार्कोव मॉडल श्रेणी: पायथन (प्रोग्रामिंग भाषा) कोड के उदाहरण वाले लेख