Toán học, 159 100 87 86 85 byte
n=3;1-Mean@Sign[##&@@Norm/@({1,0,0,-1}~t~n.Partition[#,2,1,1])&/@{1,-1}~(t=Tuples)~n]
Để thay đổi nchỉ cần thay đổi định nghĩa biến ở đầu.
Vì nó vũ phu nên nó khá chậm, nhưng đây là tám kết quả đầu tiên:
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
Lần cuối cùng đã mất 231 giây và thời gian chạy là theo cấp số nhân khủng khiếp.
Giải trình
Như tôi đã nói đó là sức mạnh vũ phu. Về cơ bản, tôi chỉ liệt kê tất cả những gì có thể Avà B, tính hai sản phẩm chấm cho mỗi cặp có thể và sau đó tìm phần nhỏ của các cặp mang lại {0, 0}. Các tổ hợp của Mathicala và các hàm đại số tuyến tính khá hữu ích trong việc chơi gôn này:
{1,-1}~(t=Tuples)~n
Điều này tạo ra tất cả các n-tup chứa 1hoặc -1, tức là tất cả có thể A. Vì n = 3đó là:
{{1, 1, 1},
{1, 1, -1},
{1, -1, 1},
{1, -1, -1},
{-1, 1, 1},
{-1, 1, -1},
{-1, -1, 1},
{-1, -1, -1}}
Để tính toán Bchúng tôi làm gần như giống nhau:
{1,0,0,-1}~t~n
Bằng cách lặp lại 0, chúng tôi nhân đôi từng bộ dữ liệu cho mỗi bộ 0chứa, do đó 0có khả năng gấp đôi 1hoặc -1. Một lần nữa sử dụng n = 3làm ví dụ:
{{-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}}
Bây giờ, đối với mỗi khả năng A, chúng tôi muốn sản phẩm chấm của từng loại có thể B, cả với A[1 .. n]và A[2 .. n+1]. Ví dụ: nếu hiện tại của chúng tôi Alà {1, 1, -1}, chúng tôi muốn sản phẩm chấm có cả {1, 1, -1}và với {1, -1, 1}. Vì tất cả chúng ta Bđều đã thuận tiện các hàng của một ma trận, chúng tôi muốn hai danh sách con Adưới dạng cột của một ma trận khác, để chúng tôi có thể tính toán một sản phẩm chấm đơn giản giữa chúng. Nhưng chuyển vị {{1, 1, -1}, {1, -1, 1}}chỉ đơn giản là đưa ra {{1, 1}, {1, -1}, {-1, 1}}một danh sách tất cả các danh sách con theo chu kỳ 2 phần tử của A. Đó là những gì nó làm:
Partition[#,2,1,1]
Vì vậy, chúng tôi tính toán điều đó và lấy sản phẩm chấm với danh sách của chúng tôi B. Vì bây giờ chúng ta có được một danh sách lồng nhau (vì mỗi cái có thể Amang lại một vectơ riêng), chúng ta làm phẳng những cái đó với ##&@@.
Để tìm hiểu xem một cặp {x, y}là {0, 0}chúng tôi tính toán Sign[Norm[{x,y}]] nơi Normcho √(x²+y²). Điều này cho 0hay 1.
Cuối cùng, vì bây giờ chúng tôi chỉ muốn biết các phân số của 1s trong danh sách 0s và 1s tất cả những gì chúng tôi cần là trung bình số học của danh sách. Tuy nhiên, điều này mang lại xác suất của cả hai ít nhất một sản phẩm chấm là khác không, vì vậy chúng tôi trừ nó 1để có kết quả mong muốn.
nsẽ hữu ích. Cũng có thể một ví dụ rõ ràng về A, B và hai sản phẩm bên trong có thể giúp ích.