Mathematica, 159 100 87 86 85 bytes
n=3;1-Mean@Sign[##&@@Norm/@({1,0,0,-1}~t~n.Partition[#,2,1,1])&/@{1,-1}~(t=Tuples)~n]
Para cambiar, nsimplemente cambie la definición de la variable al principio.
Como es la fuerza bruta, es bastante lenta, pero aquí están los primeros ocho resultados:
n P(n)
1 1/2
2 3/8
3 7/32
4 89/512
5 269/2048
6 903/8192
7 3035/32768
8 169801/2097152
El último ya tomó 231 segundos y el tiempo de ejecución es terriblemente exponencial.
Explicación
Como dije, es fuerza bruta. Esencialmente, solo enumero todos los posibles Ay B, calculo los dos productos de puntos para cada par posible y luego encuentro la fracción de pares que produjo {0, 0}. Las funciones de combinatoria y álgebra lineal de Mathematica fueron bastante útiles para jugar golf:
{1,-1}~(t=Tuples)~n
Esto genera todas las n-tuplas que contienen 1o -1, es decir, todas las posibles A. Por n = 3eso es:
{{1, 1, 1},
{1, 1, -1},
{1, -1, 1},
{1, -1, -1},
{-1, 1, 1},
{-1, 1, -1},
{-1, -1, 1},
{-1, -1, -1}}
Para calcular Bhacemos casi lo mismo:
{1,0,0,-1}~t~n
Repitiendo 0, duplicamos cada tupla para cada uno 0que contiene, con lo que 0el doble de probabilidades 1o -1. Nuevamente usando n = 3como ejemplo:
{{-1, -1, -1},
{-1, -1, 0}, {-1, -1, 0},
{-1, -1, 1},
{-1, 0, -1}, {-1, 0, -1},
{-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0}, {-1, 0, 0},
{-1, 0, 1}, {-1, 0, 1},
{-1, 1, -1},
{-1, 1, 0}, {-1, 1, 0},
{-1, 1, 1},
{0, -1, -1}, {0, -1, -1},
{0, -1, 0}, {0, -1, 0}, {0, -1, 0}, {0, -1, 0},
{0, -1, 1}, {0, -1, 1},
{0, 0, -1}, {0, 0, -1}, {0, 0, -1}, {0, 0, -1},
{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
{0, 0, 1}, {0, 0, 1}, {0, 0, 1}, {0, 0, 1},
{0, 1, -1}, {0, 1, -1},
{0, 1, 0}, {0, 1, 0}, {0, 1, 0}, {0, 1, 0},
{0, 1, 1}, {0, 1, 1},
{1, -1, -1},
{1, -1, 0}, {1, -1, 0},
{1, -1, 1},
{1, 0, -1}, {1, 0, -1},
{1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0},
{1, 0, 1}, {1, 0, 1},
{1, 1, -1},
{1, 1, 0}, {1, 1, 0},
{1, 1, 1}}
Ahora, para cada posible A, queremos el producto escalar de cada uno de esos posibles B, con A[1 .. n]y A[2 .. n+1]. Por ejemplo, si nuestro actual Aes {1, 1, -1}, queremos el producto de punto con ambos {1, 1, -1}y con {1, -1, 1}. Como todos nuestros Bya son convenientemente las filas de una matriz, queremos que las dos sublistas sean Acomo columnas de otra matriz, para que podamos calcular un simple producto de puntos entre ellas. Pero la transposición {{1, 1, -1}, {1, -1, 1}}simplemente da {{1, 1}, {1, -1}, {-1, 1}}cuál es solo una lista de todas las sublistas cíclicas de 2 elementos A. Eso es lo que hace esto:
Partition[#,2,1,1]
Entonces calculamos eso y tomamos el producto punto con nuestra lista de B. Como ahora obtenemos una lista anidada (dado que cada posible Aproduce un vector separado), los aplanamos con ##&@@.
Para averiguar si un par {x, y}es {0, 0}, calculamos Sign[Norm[{x,y}]] dónde Normda √(x²+y²). Esto da 0o 1.
Por último, ya que ahora sólo queremos saber las fracciones de 1s en una lista de 0s y 1S Todo lo que necesitamos es la media aritmética de la lista. Sin embargo, esto produce la probabilidad de que al menos un producto de punto sea distinto de cero, por lo que lo restamos 1para obtener el resultado deseado.
nserían útiles. También puede ser útil un ejemplo explícito de A, B y los dos productos internos.