6. Morse cadena de Markov

Para el texto en código Morse obtenido en el ejercicio «Morse codificador texto», se requiere realizar la correspondiente cadena de Markov.

Se tiene como archivo de entrada: elaguacate_morse.txt

- ..- . .-. . ... -- .. .- -- --- .-. 
-- .. -.. .. -.-. .... .- -.-- -- .. - . ... --- .-. --- 
-- .. ... --- .-.. --- . -. -.-. .- -. - --- 
-.-- -- .. .. .-.. ..- ... .. --- -. .-.-.-
  1. Determine el espacio de estados: S= {…}
  2. Realice el diagrama de transición de estados.
  3. Realice el conteo correspondiente de las transiciones entre estados
  4. Elabore la matriz de transición usando el resultado anterior
  5. Ubique en el diagrama los valores correspondientes a las transiciones
  6. Encuentre la matriz de transición en estado estable, o largo plazo.
  7. Compare los resultados de estado estable con la pmf obtenida en el ejercicio «Morse codificador texto»
  8. Presente las observaciones
  9. Escriba las recomendaciones.

Instrucciones en Python

Un ejemplo de instrucciones para realizar el conteo de las transiciones.

# Matriz de transicion de Código Morse
# Tarea: Realizar la matriz de transición
# para la cadena de Markov
import numpy as np

# INGRESO
narchivo = 'elaguacate_morse.txt'
archivo  = open(narchivo, 'r')

# PROCEDIMIENTO
s = '.- '
n = len(s)
conteo = np.zeros(shape=(n,n), dtype=int)
linea  = archivo.readline()
while not(linea ==''):
    linea = linea.strip('\n')
    m = len(linea)
    for i in range(0,m-1,1):
        simbolo = linea[i]
        simbolosigue = linea[i+1]
        f = s.find(simbolo)
        c = s.find(simbolosigue)
        conteo[f,c] = conteo[f,c] +1
    
    print(linea)
    linea = archivo.readline()

# SALIDA
print('matriz de conteo: ')
print('   .   -  espacio')
print(conteo)

Resultado del algoritmo

matriz de conteo: 
   .   -  espacio
[[123 116 145]
 [100  93 123]
 [156  92 102]]