Đây là một nhận xét (dài!) Về tác phẩm hay mà @vqv đã đăng trong chủ đề này. Nó nhằm mục đích để có được một câu trả lời dứt khoát. Ông đã làm công việc khó khăn để đơn giản hóa từ điển. Tất cả những gì còn lại là khai thác nó một cách đầy đủ nhất. Kết quả của ông cho thấy một giải pháp vũ phu là khả thi . Rốt cuộc, bao gồm cả ký tự đại diện, có nhiều nhất là từ có thể tạo với 7 ký tự và có vẻ như chưa đến 1/10000 trong số đó - khoảng một triệu - sẽ không bao gồm một số từ hợp lệ. 277=10,460,353,203
Bước đầu tiên là tăng từ điển tối thiểu bằng ký tự đại diện, "?". 22 trong số các chữ cái xuất hiện trong các từ hai chữ cái (tất cả trừ c, q, v, z). Nối một ký tự đại diện vào 22 chữ cái đó và thêm chúng vào từ điển: {a?, B?, D?, ..., y?} Hiện đang ở. Tương tự chúng ta có thể kiểm tra các từ ba chữ cái tối thiểu, gây ra một số từ bổ sung để xuất hiện trong từ điển. Cuối cùng, chúng tôi thêm "??" vào từ điển Sau khi loại bỏ sự lặp lại kết quả đó, nó chứa 342 từ tối thiểu.
Một cách thức thanh lịch để tiến hành - một cách sử dụng một lượng mã hóa rất nhỏ thực sự - là xem vấn đề này như một vấn đề đại số . Một từ, được coi là một tập hợp các chữ cái không có thứ tự, chỉ là một từ đơn. Ví dụ: "spats" là đơn thức . Do đó, từ điển là một bộ sưu tập các đơn thức. Nó có vẻ nhưaps2t
{a2,ab,ad,...,ozψ,wxψ,ψ2}
(ở đâu, để tránh nhầm lẫn, tôi đã viết cho ký tự đại diện).ψ
Một giá chứa một từ hợp lệ khi và chỉ khi từ đó chia giá.
Một trừu tượng hơn, nhưng cực kỳ mạnh mẽ, cách nói này là từ điển tạo ra một lý tưởng trong đa thức nhẫn R = Z [ một , b , ... , z , ψ ] và rằng kệ với các từ hợp lệ trở thành số không trong thương ring R / I , trong khi giá đỡ không có từ hợp lệ vẫn không khác biệt trong thương số. Nếu chúng ta tạo tổng của tất cả các giá đỡ trong R và tính nó trong vòng thương số này, thì số lượng giá đỡ không có từ bằng với số lượng đơn thức riêng biệt trong thương số.IR=Z[a,b,…,z,ψ]R/IR
Hơn nữa, tổng của tất cả các giá đỡ trong là đơn giản để thể hiện. Đặt α = a + b + ⋯ + z + ψ là tổng của tất cả các chữ cái trong bảng chữ cái. α 7 chứa một đơn thức cho mỗi giá đỡ. (Là một phần thưởng bổ sung, các hệ số của nó sẽ đếm số cách mỗi giá có thể được hình thành, cho phép chúng tôi tính xác suất của nó nếu chúng tôi muốn.)Rα=a+b+⋯+z+ψα7
Như một ví dụ đơn giản (để xem cách thức hoạt động của nó), giả sử (a) chúng ta không sử dụng ký tự đại diện và (b) tất cả các chữ cái từ "a" đến "x" đều được coi là từ. Sau đó, giá đỡ duy nhất có thể từ đó các từ không thể được hình thành phải bao gồm toàn bộ y và z. Chúng tôi tính toán modulo lý tưởng được tạo bởi { a , b , c , Trần , x } một bước tại một thời điểm, do đó:α=(a+b+c+⋯+x+y+z)7{a,b,c,…,x}
α0α1α2⋯α7=1=a+b+c+⋯+x+y+z≡y+zmodI≡(y+z)(a+b+⋯+y+z)≡(y+z)2modI≡(y+z)6(a+b+⋯+y+z)≡(y+z)7modI.
Chúng ta có thể đọc được cơ hội nhận được giá không từ từ câu trả lời cuối cùng, : mỗi hệ số đếm các cách mà giá đỡ tương ứng có thể được rút ra. Ví dụ: có 21 cách (trong số 26 ^ 7 có thể) để vẽ 2 y và 5 z vì hệ số của yy7+7y6z+21y5z2+35y4z3+35y3z4+21y2z5+7yz6+z7 bằng 21.y2z5
Từ các tính toán cơ bản, rõ ràng đây là câu trả lời chính xác. Toàn bộ vấn đề là thủ tục này hoạt động bất kể nội dung của từ điển.
Lưu ý cách giảm modulo công suất lý tưởng ở từng giai đoạn làm giảm tính toán: đó là lối tắt được tiết lộ theo phương pháp này. (Kết thúc ví dụ.)
Hệ thống đại số đa thức thực hiện các tính toán này . Ví dụ, đây là Mathematica mã:
alphabet = a + b + c + d + e + f + g + h + i + j + k + l + m + n + o +
p + q + r + s + t + u + v + w + x + y + z + \[Psi];
dictionary = {a^2, a b, a d, a e, ..., w z \[Psi], \[Psi]^2};
next[pp_] := PolynomialMod[pp alphabet, dictionary];
nonwords = Nest[next, 1, 7];
Length[nonwords]
(Từ điển có thể được xây dựng theo cách đơn giản từ min.dict của @ vqv; Tôi đặt một dòng ở đây cho thấy rằng nó đủ ngắn để được chỉ định trực tiếp nếu bạn muốn.)
Đầu ra - mất mười phút tính toán - là 577958. ( NB Trong phiên bản trước của thông báo này, tôi đã mắc một lỗi nhỏ trong việc chuẩn bị từ điển và thu được 577940. Tôi đã chỉnh sửa văn bản để phản ánh những gì tôi hy vọng bây giờ kết quả chính xác!) Ít hơn một triệu so với tôi dự kiến, nhưng có cùng độ lớn.
Để tính toán cơ hội có được giá như vậy, chúng ta cần tính đến số cách có thể rút ra giá. Như chúng ta đã thấy trong ví dụ, điều này bằng với hệ số của nó trong . Cơ hội vẽ một số giá như vậy là tổng của tất cả các hệ số này, dễ dàng tìm thấy bằng cách đặt tất cả các chữ cái bằng 1:α7
nonwords /. (# -> 1) & /@ (List @@ alphabet)
Câu trả lời bằng 1066056120, mang lại cơ hội 10,1914% cho việc vẽ một giá đỡ mà từ đó không có từ nào hợp lệ có thể được hình thành (nếu tất cả các chữ cái đều có khả năng như nhau).
Khi xác suất của các chữ cái khác nhau, chỉ cần thay thế từng chữ cái với cơ hội được rút ra:
tiles = {9, 2, 2, 4, 12, 2, 3, 2, 9, 1, 1, 4, 2, 6, 8, 2, 1, 6, 4, 6,
4, 2, 2, 1, 2, 1, 2};
chances = tiles / (Plus @@ tiles);
nonwords /. (Transpose[{List @@ alphabet, chances}] /. {a_, b_} -> a -> b)
Đầu ra là 1.079877553303%, câu trả lời chính xác (mặc dù sử dụng một mô hình gần đúng, bản vẽ có thay thế). Nhìn lại, phải mất bốn dòng để nhập dữ liệu (bảng chữ cái, từ điển và tần số bảng chữ cái) và chỉ có ba dòng để thực hiện công việc: mô tả cách lấy sức mạnh tiếp theo của modulo I , lấy đệ quy nguồn thứ 7 và thay thế xác suất cho các chữ cái.αI