Toán học
Quyết định bắt đầu lại, bây giờ tôi đã hiểu luật chơi (tôi nghĩ).
Một từ điển 10000 từ gồm các "từ" được tạo ngẫu nhiên duy nhất (chỉ chữ thường) có độ dài 3. Theo cách tương tự, các từ điển khác được tạo ra bao gồm các chuỗi có độ dài 4, 5, 6, 7 và 8.
ClearAll[dictionary]
dictionary[chars_,nWords_]:=DeleteDuplicates[Table[FromCharacterCode@RandomInteger[{97,122},
chars],{nWords}]];
n=16000;
d3=Take[dictionary[3,n],10^4];
d4=Take[dictionary[4,n],10^4];
d5=Take[dictionary[5,n],10^4];
d6=Take[dictionary[6,n],10^4];
d7=Take[dictionary[7,n],10^4];
d8=Take[dictionary[8,n],10^4];
g
lấy phiên bản hiện tại của từ điển để kiểm tra. Từ trên cùng được nối với các biến thể tuần hoàn (nếu có). Từ và từ khớp của nó được thêm vào danh sách đầu ra out
, của các từ được xử lý. Các từ đầu ra được loại bỏ khỏi từ điển.
g[{wds_,out_}] :=
If[wds=={},{wds,out},
Module[{s=wds[[1]],t,c},
t=Table[StringRotateLeft[s, k], {k, StringLength[s]}];
c=Intersection[wds,t];
{Complement[wds,t],Append[out,c]}]]
f
chạy qua tất cả các từ điển.
f[dict_]:=FixedPoint[g,{dict,{}}][[2]]
Ví dụ 1 : từ thực tế
r = f[{"teaks", "words", "spot", "pots", "sword", "steak", "hand"}]
Length[r]
{{ "bít tết", "teaks"}, { "bàn tay"}, { "chậu", "điểm"}, { "thanh kiếm", "chữ"}}
4
Ví dụ 2 : Từ nhân tạo. Từ điển các chuỗi có độ dài 3. Đầu tiên, thời gian. Sau đó, số lượng từ chu kỳ.
f[d3]//AbsoluteTiming
Length[%[[2]]]
5402
Thời gian là một hàm của chiều dài từ . 10000 từ trong mỗi từ điển.
Tôi đặc biệt không biết làm thế nào để diễn giải các phát hiện theo thuật ngữ O. Nói một cách đơn giản, thời gian tăng gấp đôi từ từ điển ba ký tự đến từ điển bốn ký tự. Thời gian tăng gần như không đáng kể từ 4 đến 8 ký tự.