300000
Tổng số trận thắng: 111541
(6 – 20): | Xe đạp Con đường Ngẫu nhiên Thách thức |
Định nghĩa + Làm thế nào đây vẫn là một trò chơi "toán học"?
Các sơ đồ trong trò chơi này dựa trên một lĩnh vực toán học được gọi là lý thuyết đồ thị!
Đồ thị là gì?
Đồ thị: Một biểu đồ bao gồm các nút và cạnh.
Node: Các "đối tượng" mà đồ thị kết nối được gọi là các nút. Trong Spider Web, các nút là các vòng tròn.
Edge: Một cạnh là một kết nối trong biểu đồ giữa hai nút. Trong Spider Web, các cạnh là các đường.
Mở rộng đường dẫn
Đường dẫn: Đường dẫn là một chuỗi các cạnh được kết nối với nút bắt đầu và nút kết thúc.
Đường dẫn Eulerian: Đây là một đường dẫn sử dụng mỗi cạnh trong đồ thị chính xác một lần.
Mục tiêu trong trò chơi này là tìm ra một con đường Eulerian.
Những con đường Euler trong cuộc sống hàng ngày là gì?
Một chiếc máy cày tuyết, một chiếc xe tải dọn dẹp đường phố và một người đưa thư là những ví dụ cho ô tô và những người cần đi qua mỗi con phố nhưng muốn tránh đi qua một con phố hai lần.
Cái tên "Euler" nghe có quen thuộc không?
Lý thuyết đồ thị bắt đầu khi nhà toán học Leonhard Euler đang nghiên cứu loại đường dẫn này.
Euler đã viết một bài báo về Bảy cây cầu của Königsberg chứng minh rằng không thể đi bộ qua thành phố băng qua mỗi cây cầu chính xác một lần.
Nhấp vào bản đồ của vấn đề bên dưới để đọc thêm về vấn đề đó.
Chu kỳ: Chu kỳ là một đường dẫn kết thúc trên nút mà nó bắt đầu.
Chu kỳ Eulerian: Đây là một con đường Euler cũng là một chu kỳ. Chọn "Chu kỳ" trong trò chơi của chúng tôi ở trên và giải pháp sẽ luôn là Chu kỳ Eulerian!
Hướng dẫn cài đặt trò chơi
Trong hộp văn bản bên cạnh Nodes, bạn có thể nhập bất kỳ số nào từ 6-20. Con số này sẽ là số lượng nút được hiển thị trên biểu đồ. Số lượng càng lớn, giải pháp càng trở nên khó khăn!
Tiếp theo, chọn một Loại biểu đồ
Chu kỳ: Con đường chiến thắng sẽ luôn kết thúc trên nút mà chúng bắt đầu.
Đường dẫn: Đường dẫn chiến thắng sẽ không kết thúc trên nút mà chúng bắt đầu.
Ngẫu nhiên: Đồ thị có thể cho phép một chu kỳ Euler hoặc một đường đi Eulerian. Con đường chiến thắng có thể hoặc không thể kết thúc trên nút mà chúng bắt đầu.
Thách thức: Đồ thị thủ công nơi các cạnh đi qua và do đó các cây cầu không rõ ràng để phát hiện.
Cuối cùng, nhấp vào "Tạo một trang web mới" để xem các thay đổi của bạn đối với cài đặt biểu đồ!
Tôi nên chọn nút nào đầu tiên?
Bằng cấp: Mức độ là một thuộc tính của một nút. Đó là số cạnh được kết nối với nó. Chúng ta sẽ phân biệt giữa các nút độ lẻ và các nút độ chẵn, tùy thuộc vào mức độ của chúng.
Connected Graph: Một biểu đồ trong đó mỗi cặp nút có thể được kết nối thông qua một đường dẫn.
Cầu: Một cạnh là một cây cầu nếu hai đầu của cạnh không thể được kết nối bằng cách khác. Vì vậy, sau khi qua một cây cầu, người ta sẽ không quay trở lại phía trước. Loại bỏ một cây cầu sẽ tách biểu đồ thành hai thành phần bị ngắt kết nối.
Đồ thị không định hướng : Một đồ thị trong đó các cạnh không có hướng được đính kèm. Chúng tôi chỉ xem xét những người trong trò chơi này.
Đồ thị có hướng : Một biểu đồ trong đó mỗi cạnh có một hướng được gắn liền như đường một chiều.
Đồ thị không định hướng chứa chu trình Euler khi tất cả các nút đều có bậc chẵn (bậc 0, 2, 4, 6...) . Đối với những điều này, bạn có thể chọn bất kỳ nút nào làm nút bắt đầu của mình và vẫn giành chiến thắng. Chỉ cần lưu ý rằng bạn sẽ phải hoàn thành trên nút bạn đã bắt đầu.
Một đồ thị chứa một đường dẫn Eulerian, nhưng không một chu kỳ Eulerian, khi chính xác hai nút có bậc lẻ (bậc 1, 3, 5, 7...) và tất cả các nút khác có mức độ chẵn. Trong trường hợp này, bạn phải chọn một nút có bậc lẻ làm nút bắt đầu nếu không bạn sẽ không thể hoàn thành Đường dẫn Eulerian.
Tại sao chính xác là hai nút?
Hãy nghĩ về mỗi lần di chuyển như "ra" khỏi nút bạn đến và "vào" nút bạn đi đến. Hầu hết các nút sẽ tuân theo mô hình ghép nối này, vì vậy chúng sẽ có mức độ chẵn.
Khi bạn bắt đầu trò chơi, cạnh đầu tiên bạn đánh dấu là di chuyển "ra" khỏi nút bắt đầu. Điều này vẫn chưa được ghép nối khi bạn chơi trò chơi.
Để tạo chu kỳ Eulerian, cạnh cuối cùng bạn đánh dấu là di chuyển "vào" nút bắt đầu. Điều này tạo ra một cặp với bước di chuyển đầu tiên, có nghĩa là nút bắt đầu có mức độ chẵn.
Nếu Đường dẫn Eulerian của đồ thị không phải là một chu kỳ, cạnh cuối cùng bạn đánh dấu là một di chuyển không ghép nối "vào" một nút không phải là nút bắt đầu. nút bắt đầu vẫn ở mức độ lẻ và nút kết thúc cũng sẽ có mức độ lẻ.
Đừng lo lắng về bất kỳ trường hợp nào khác. Nếu số lượng nút có độ lẻ không chính xác là 0 hoặc 2, sẽ không có Đường dẫn Euler và không có Chu kỳ Eulerian, có nghĩa là không có cách nào để giành chiến thắng. Những đồ thị như thế không nên xuất hiện trong trò chơi này.
Câu hỏi sơ bộ
Có thể có một số lẻ các nút với một mức độ lẻ?
Không.
Tại sao?
Bằng chứng:
Đếm tất cả các đầu của tất cả các cạnh cho cùng một số như cộng tất cả các độ của tất cả các nút, đồng ý?
Vì mỗi cạnh có 2 đầu nên tổng số đầu của tất cả các cạnh phải chẵn. (Cộng các số chẵn sẽ cho một số chẵn.)
Để cộng độ của tất cả các nút, người ta sẽ cộng các độ chẵn cho một số chẵn và cộng các độ lẻ.
Nếu có một số lẻ các nút bậc lẻ thì tổng đó sẽ là lẻ và sau đó chẵn + lẻ = lẻ, vì vậy tổng số độ sẽ là lẻ. Nhưng nó bằng tổng số tất cả các đầu của tất cả các cạnh và đó là số chẵn. Do đó, số lượng nút độ lẻ không thể lẻ, nó phải là số chẵn.
Ví dụ, 1 là một số lẻ, vì vậy không có đồ thị nào chỉ có 1 nút bậc lẻ.
Khi nào một con đường hoặc chu kỳ Euler tồn tại?
Nếu một nút có bậc chẵn, tức là 2, 4, 6,... Các cạnh được gắn vào nút, sau đó khi đến nút đó, một số lẻ các cạnh không sử dụng được để lại lớn hơn 0, vì vậy người ta sẽ có thể rời khỏi nút đó và tiếp tục. Nếu mức độ là lẻ, tức là 1, 3, 5,.. Các cạnh được đính kèm sau đó người ta phải bắt đầu đường dẫn tại nút này hoặc đường dẫn sẽ kết thúc tại nút này. Bởi vì một đường dẫn chỉ có 2 đầu, chỉ có thể có 2 nút với mức độ lẻ. Do đó:
Để có chu kỳ Eulerian, một đồ thị chỉ phải có các nút bậc chẵn và để có Đường dẫn Eulerian, nó phải có 2 nút bậc lẻ, một nút sẽ là điểm bắt đầu và một nút sẽ là điểm cuối của đường dẫn.
Làm thế nào để tìm thấy một con đường hoặc chu kỳ Eulerian?
Như đã trình bày ở trên, nếu không có nút mức độ lẻ, thì người ta có thể bắt đầu tại bất kỳ nút nào và sẽ kết thúc tại cùng một nút. Nếu có chính xác 2 nút cấp lẻ, thì người ta cần bắt đầu ở bất kỳ một trong 2 nút này và sẽ tự động kết thúc ở nút còn lại.
Có thể có điều gì đó không ổn khi mở rộng con đường không?
Vâng, một cái gì đó có thể đi sai. Ví dụ:
2 4 / \ / \ 1---3---5
Mức độ của tất cả các nút là 2 ngoại trừ nút 3 có độ 4. Vì vậy, tất cả các mức độ đều đồng đều và chúng ta có thể bắt đầu ở bất cứ đâu. Chúng ta hãy bắt đầu từ nút 1 và đi đến nút 3 và chúng ta hãy thả tất cả các cạnh đã được đi qua.
2 4 / \ / \ 1 3---5
Cạnh 3-2 trở thành cây cầu. Vượt qua và loại bỏ cạnh này 3-2 tạo ra một biểu đồ bị ngắt kết nối
2 4 / / \ 1 3---5
mà không thể hoàn toàn vượt qua được nữa. Do đó, người ta nên tiếp tục từ 3 đến 4 hoặc đến 5 để hoàn thành chu kỳ Eulerian.
Làm thế nào người ta có thể ngăn chặn việc đi qua một cây cầu?
Để kiểm tra xem một cạnh có phải là một cây cầu hay không, người ta sẽ bắt đầu ở một đầu của cạnh và ghé thăm tất cả các nút lân cận và tất cả các hàng xóm của chúng, v.v. Nếu một người không đến được phía bên kia của cạnh, thì cạnh là một cây cầu. Một tìm kiếm đầy đủ như vậy của tất cả các nước láng giềng không phải là rất tốn kém. Nhưng nếu một người phải làm điều đó trước khi vượt qua từng cạnh, thì tổng nỗ lực là lớn. Thuật toán hoàn chỉnh được gọi là thuật toán Fleury, có từ năm 1883.
Có thuật toán nào hiệu quả hơn không?
Một thuật toán hiệu quả hơn là của Hierholzer (1873).
Nếu đồ thị có 2 nút bậc lẻ, thì người ta tìm thấy một đường dẫn khác là một chu kỳ, trong cả hai trường hợp đều rất nhanh mà không cần kiểm tra cầu.
1) Sau khi loại bỏ tất cả các cạnh đã sử dụng, mức độ của các cạnh không sử dụng còn lại là chẵn cho tất cả các nút.
Tại sao?
Nếu mức độ của một nút là chẵn, thì nó thường được tiếp cận như nhau khi nó còn lại, vì vậy nó vẫn là đồng đều. Nếu mức độ là lẻ, thì nó là nút bắt đầu hoặc nút cuối của đường dẫn đầu tiên và sau đó nó được để lại + tiếp cận tổng cộng một số lần lẻ, vì vậy mức độ còn lại là lẻ - lẻ = chẵn.
2) Phải có ít nhất một nút với các cạnh liền kề đã sử dụng và không sử dụng.
Tại sao?
Bởi vì đồ thị ban đầu đã được kết nối.
Bởi vì 1) người ta có thể tìm thấy một chu kỳ của các cạnh không sử dụng, bắt đầu và kết thúc tại nút này. Bởi vì 2) chu kỳ này có thể được bao gồm trong đường dẫn / chu kỳ đầu tiên khi nó đến nút này. Việc nhúng các chu kỳ của các cạnh chưa sử dụng cho đến nay được lặp lại cho đến khi tất cả các cạnh được sử dụng và do đó một chu kỳ có đường Euler hoặc chu trình Euler sử dụng tất cả các cạnh.
Giá của phiên bản nhanh hơn này là bao nhiêu?
Người ta phải nhớ đường dẫn / chu kỳ trước đó để người ta có thể bao gồm chu kỳ bổ sung.
Ví dụ:
2 4 / \ / \ 1---3---5
Hãy để chu kỳ đầu tiên là 1-3-2-1. Nút 3 xảy ra trong chu kỳ này và trong chu kỳ không sử dụng 3-4-5-3. Chúng tôi chèn nó vào chu kỳ đầu tiên và nhận được chu kỳ 1-3-4-5-3-2-1. Không còn các cạnh không sử dụng nữa nên thuật toán kết thúc ở đây, chúng tôi đã tìm thấy chu trình Eulerian.
Làm thế nào một chu kỳ có thể được chèn bằng giao diện của chúng tôi?
Người ta có thể nhấp vào 'Hoàn tác' cho đến khi người ta đạt đến nút gần đây nhất đã sử dụng và các cạnh không sử dụng, như nút 3 ở trên, sau đó trải qua chu kỳ 3-4-5-3 và sau đó tiếp tục với các cạnh chưa hoàn thành.
Nếu có một nút mức độ lẻ, người ta có cần tìm cả hai để vẽ một con đường đầu tiên từ nút này sang nút kia không?
Không. Nếu một người chỉ tìm thấy một, thì người ta có thể bắt đầu đường dẫn tại nút này và một nút sẽ tự động kết thúc ở nút mức độ lẻ khác cho dù người ta có sử dụng tất cả các cạnh hay không.
Tại sao?
Bởi vì khi một người đến một nút độ chẵn, thì một số lẻ các cạnh đính kèm đã được sử dụng.
Tại sao?
Mỗi khi một người đến một nút, người ta cũng rời khỏi nút, do đó, một số cạnh chẵn được sử dụng. Bây giờ, người ta đến và sử dụng một cạnh trên một nút độ chẵn. Vì vậy, một sử dụng tổng cộng một số cạnh lẻ trên nút độ chẵn.
Chẵn − lẻ = lẻ, do đó còn lại một số lẻ các cạnh không sử dụng. Một số lẻ luôn không phải là số không, vì vậy có ít nhất một cạnh không sử dụng có thể được sử dụng để rời khỏi nút đó. Do đó, người ta sẽ tự động kết thúc ở nút độ lẻ cho dù tất cả các cạnh đã được sử dụng hay chưa.
Bạn có một gợi ý làm thế nào người ta có thể tìm thấy một nút độ lẻ?
Tất nhiên, người ta có thể kiểm tra mức độ của mỗi nút cho đến khi người ta tìm thấy một nút mức độ lẻ. Đây là một cách mà không cần đếm.
Người ta có thể chọn bất kỳ nút nào. Nếu mức độ của nó là kỳ lạ, thì người ta đã tìm thấy một. Nếu không, thì người ta bắt đầu tại nút này để vẽ một chu kỳ. Nó sẽ kết thúc ở một nút độ lẻ, sau đó người ta đã tìm thấy một nút bậc lẻ hoặc một nút sẽ kết thúc ở nút bắt đầu. Nếu vậy, thì người ta bỏ qua tất cả các cạnh được sử dụng và thực hiện lại điều đó, tức là chọn một nút và vẽ một đường dẫn hoặc chu kỳ. Điều này tiếp tục cho đến khi người ta tìm thấy một nút độ lẻ hoặc không còn các cạnh không sử dụng nữa. Sau đó, tất cả các nút có một mức độ chẵn.
Điều gì sẽ xảy ra nếu biểu đồ giống như một thành phố có đường 1 chiều?
Một đồ thị có các cạnh chỉ có thể đi qua theo một hướng được gọi là đồ thị có hướng. Sau lập luận trên, 2 nhận định sau đây là hợp lý.
Một đồ thị có hướng cho phép một chu trình Eulerian, nếu và chỉ khi, đối với mỗi nút, số cạnh đi bằng số cạnh đến.
Một đồ thị có hướng cho phép một Đường dẫn Eulerian, nếu và chỉ khi
• một nút có nhiều cạnh đi hơn các cạnh đến,
• một nút có nhiều cạnh đến hơn các cạnh đi và
• Tất cả các cạnh khác có cùng số cạnh đi và đến.
Theo dõi cập nhật sắp tới