2012-05-29 38 views
11

Bất kỳ ai cũng có thể giúp tôi với thuật toán phát hiện chu trình của Brent. Tôi không hiểu chính xác tại sao "tìm kiếm sức mạnh nhỏ nhất của hai 2^i lớn hơn cả λ và μ"? Làm thế nào quyền hạn của 2 đang chơi vai trò trong việc phát hiện chu kỳ. Có phải nó liên quan đến thuật toán phát hiện chu kỳ Floyd không? Tôi không thể lấy nó từ những điều cơ bản. Hãy giúp tôi !Thuật toán phát hiện chu trình của Brent

+0

@WillNess gì thực hiện điều này phải làm với số nguyên tố? Tôi nghĩ rằng thẻ số nguyên tố nên được loại bỏ. – gsingh2011

+0

@ gsingh2011 nó được sử dụng trong thuật toán hệ số chính. có thể là thẻ chính yếu tố nên được thêm vào/thay thế số nguyên tố ... :) –

Trả lời

9

Phương pháp này sử dụng các bước tăng (1, 2, 4, 8 ...) để vào bên trong vòng lặp càng sớm càng tốt. Khi P = 2^k trở nên lớn hơn cả λ và μ, thì con rùa (T) đang ở trong vòng lặp, và thỏ (H) không làm nhiều hơn các bước P để gặp lại (đứng) rùa một lần nữa. Dường như một số mô phỏng sẽ hữu ích. Chúng ta hãy có danh sách 0-1-2-3-4-5-6-7-3

P=1 T=0 H=0; H makes 1 step and doesn't meet T 
P=2 T=1 H=1; H makes 2 steps and doesn't meet T 
P=4 T=3 H=3; H makes 4 steps and doesn't meet T 
P=8 T=7 H=7; H makes 5 steps and meets T !!!!! 

Lưu ý: Với P = 4 T là bên trong vòng lặp, nhưng thỏ không đi qua toàn bộ chu kỳ (P> = μ nhưng P < λ)

Vì vậy, chúng tôi đã tìm thấy μ < 8 và λ = 5. Sau đó, chúng tôi muốn tìm μ (entry point loop)

T=0 H=0; H makes 5 steps; H=5 
while T <> H 
    move both 
T=1 H=6 
T=2 H=7 
T=3 H=3 !!!!!!! 

Chúng tôi vừa tìm thấy μ = 3

+0

Thanx ... đã giúp rất nhiều :) – SlashGeek

+0

Bạn có thể giải thích tại sao "quyền hạn của hai" được sử dụng ở đây? Nếu chúng ta nhắm vào thỏ trong vòng lặp càng sớm càng tốt, tại sao chúng ta không sử dụng "quyền hạn 3" hoặc "quyền hạn 5"? Nếu "quyền hạn của 5" được sử dụng, thuật toán này sẽ vẫn hợp lệ? Cuối cùng, tại sao λ bằng với số bước cuối cùng được thực hiện trước khi gặp rùa? Bằng chứng nào chúng ta phải lấy số đó là chiều dài của chu kỳ? Cảm ơn bạn. – carawan

+0

@carawan, tôi đoán power-of-3 và power-of-5 cũng hoạt động mặc dù tôi không có bằng chứng. Tôi đã chạy một số xét nghiệm đơn giản.
Nếu trình lặp chậm hơn không di chuyển chút nào, thì thuật toán bị hỏng vì trình vòng lặp chậm hơn có thể nằm ngoài vòng lặp.
Nếu trình vòng lặp chậm hơn phù hợp với trình lặp nhanh hơn và khoảng cách sau luôn luôn dưới giới hạn cố định (như 99), thì thuật toán bị hỏng vì kích thước vòng lặp có thể vượt quá 99.
Nếu khoảng cách sau tăng dần, VÀ người theo dõi không di chuyển, sau đó tôi nghĩ cuối cùng họ sẽ gặp nhau. –

Các vấn đề liên quan