Las cadenas y secuencias se cuentan analizando las posiciones, el tamaño del alfabeto, la posibilidad de repetir símbolos y las restricciones del formato.
Una cadena es una secuencia ordenada de símbolos. Puede representar un código, una palabra, una señal, una secuencia de estados o una entrada para un algoritmo.
Contar cadenas es una aplicación directa del principio del producto: cada posición tiene un conjunto de opciones y el número total se obtiene combinando esas elecciones.
Si un alfabeto tiene n símbolos y una cadena tiene k posiciones, permitiendo repetir símbolos, la cantidad es:
Con 3 símbolos y 4 posiciones:
Si los símbolos no pueden repetirse, las opciones disminuyen en cada posición:
Con 5 símbolos y cadenas de longitud 3 sin repetir:
Escribe un alfabeto pequeño, define la longitud y decide si se permiten repeticiones. La simulación genera las cadenas y muestra el total.
Si una cadena de longitud k debe comenzar con un símbolo determinado, la primera posición deja de tener n opciones:
Con 4 símbolos y longitud 3, las cadenas que comienzan con A son 42 = 16.
Para contar cadenas que contienen al menos una A, usamos complemento:
Esta función genera cadenas permitiendo repetir cada símbolo.
function cadenas(alfabeto, longitud, actual = [], resultados = []) {
if (actual.length === longitud) {
resultados.push(actual.join(""));
return resultados;
}
for (const simbolo of alfabeto) {
cadenas(alfabeto, longitud, [...actual, simbolo], resultados);
}
return resultados;
}
console.log(cadenas(["A", "B", "C"], 2));
Si no se permite repetir el símbolo inmediatamente anterior, la primera posición tiene n opciones y cada posición posterior tiene n-1.
Con 3 símbolos y longitud 4:
Si una cadena binaria de longitud n debe contener exactamente k unos, elegimos las posiciones de los unos:
Por ejemplo, las cadenas binarias de longitud 5 con exactamente 2 unos se cuentan con C(5,2) = 10.
Si se permiten longitudes de 1 hasta k y cada posición tiene n opciones, sumamos las cantidades de cada longitud:
El principio de la suma aparece porque las longitudes distintas son alternativas excluyentes.
El conteo de cadenas y secuencias reúne muchos conceptos de la combinatoria: producto, variaciones, combinaciones, complemento y restricciones. Identificar el alfabeto y analizar cada posición permite construir el modelo correcto.
En el próximo tema estudiaremos el conteo de subconjuntos, una aplicación directa de las combinaciones y los coeficientes binomiales.