Làm thế nào để tìm một tối thiểu cục bộ của một cây nhị phân hoàn chỉnh?


7

Làm thế nào để tìm một tối thiểu cục bộ của một cây nhị phân hoàn chỉnh?

Hãy xem xét một n-node cây nhị phân hoàn chỉnh T, Ở đâu n=2d1đối với một số . Mỗi nút được gắn nhãn với một số thực . Bạn có thể giả định rằng các số thực ghi nhãn các nút đều khác biệt. Nút là mức tối thiểu cục bộ nếu nhãn nhỏ hơn nhãn cho tất cả các nút được nối với bởi một cạnh.dvV(T)xvvV(T)xvxwwv

Bạn được cấp cho mỗi cây nhị phân hoàn chỉnh , nhưng việc ghi nhãn chỉ được chỉ định theo cách ngầm định sau : đối với mỗi nút , bạn có thể xác định giá trị bằng cách thăm dò nút . Thấy làm thế nào để tìm một địa phương tối thiểu của chỉ sử dụng thăm dò đến các hạch của .TvxvvTO(logn) T

Ghi công: đây dường như là vấn đề 6 trong Chương 5 "Phân chia và chinh phục" từ cuốn sách "Thiết kế thuật toán" của Jon Kleinberg và Eva Tardos.


3
Bạn đang nói về "mức tối thiểu" cục bộ, nhưng có thể có một vài cái.
Yuval Filmus

2
Có một thuật toán sẽ tìm thấy một trong các cực tiểu cục bộ trong một cây nhị phân hoàn chỉnh theo thời gian O(log n). Đây có phải là những gì bạn đang tìm kiếm? Đây là một gợi ý: gọi một nút là "tối thiểu cục bộ ứng cử viên" nếu nó nhỏ hơn cha mẹ của nó. Bây giờ, đối với bất kỳ ứng cử viên tối thiểu địa phương nào: đó là mức tối thiểu cục bộ hoặc có một đứa trẻ là mức tối thiểu tại địa phương.
18 giờ 34 phút

Tôi thấy một ghi chú nói rằng văn bản đã được sao chép từ một bài tập. Sao chép một vấn đề từ sách giáo khoa mà không có sự ghi nhận không được phép trên trang web này. (Theo tôi, sao chép nó ngay cả với sự ghi nhận là hình thức khá kém, nhưng sao chép nó mà không có sự quy kết cho đạo văn, điều không được hoan nghênh ở đây.)
DW

Câu trả lời:


5

Vì cây là hữu hạn và các nhãn là số thực, chúng tôi đảm bảo rằng có ít phần tử nhất trong bộ nhãn ( câu hỏi này từ math.SE có bằng chứng về thuộc tính đơn giản này). Trong trường hợp này vì tất cả các nhãn là khác biệt, chúng tôi yêu cầu cực tiểu địa phương phải nhỏ hơn so với hàng xóm của chúng. Nếu đúng như vậy, thì chúng ta sẽ phải nới lỏng điều kiện này thành "ít hơn hoặc bằng", nếu không thì có thể không có giải pháp. Tuy nhiên, chúng tôi biết rằng có ít nhất một địa phương tối thiểu để tìm.

Nếu cây được root (tức là chúng ta có một khái niệm về mối quan hệ cha-con), chúng ta có thể giải quyết vấn đề rẻ hơn một chút. Nếu cây không được phân bổ, thì chúng ta cũng có thể làm bất thường, nhưng chúng ta có thể sẽ thực hiện nhiều thăm dò thực tế hơn.

Đầu tiên chúng ta sẽ giải quyết trường hợp đã root.

Vì cây là cây nhị phân (hoàn chỉnh), mỗi đỉnh có nhiều nhất là ba lân cận, cha mẹ và hai anh chị em của nó (với gốc tất nhiên không có cha mẹ), vì vậy một đỉnh là tối thiểu cục bộ nếu nhãn của nó nhỏ hơn nhãn của hai đứa con và cha mẹ của nó. Do đó, chúng ta có thể xác định xem một đỉnh có phải là tối thiểu cục bộ hay không với tối đa bốn đầu dò (thực tế là chúng ta sẽ đi ngang qua cây theo thứ tự, chúng ta sẽ cần nhiều nhất là ba trong trường hợp gốc).

Để thực sự tìm thấy một mức tối thiểu cục bộ, chúng ta có thể đi qua cây, bắt đầu với gốc là đỉnh hiện tại, theo cách sau:

  1. Thăm dò nhãn của đỉnh hiện tại và nhãn của hai con của nó.
  2. Nếu nhãn hiện tại là nhỏ nhất, hãy dừng lại và báo cáo rằng đỉnh hiện tại là mức tối thiểu cục bộ.
  3. Khác đặt đỉnh hiện tại cho con với nhãn nhỏ nhất và quay lại bước 1.

Khi chúng ta bắt đầu từ gốc, chúng ta không bao giờ phải lo lắng về nhãn của cha mẹ - gốc không có cha mẹ và nếu đỉnh hiện tại của chúng ta có cha mẹ, thì chúng ta phải giảm giá trong lần lặp trước. Lưu ý rằng trong bước 2, chúng tôi không yêu cầu nghiêm ngặt rằng chúng tôi chọn nhãn nhỏ nhất, bất kỳ nhãn nào nhỏ hơn dòng điện là đủ 1 , chọn loại nhỏ nhất chỉ mang lại sự lựa chọn xác định (một lần nữa vì chúng tôi có nhãn riêng biệt).

Khi chúng tôi chọn một đỉnh trong số hai đứa trẻ, đường ngang của chúng tôi chọn ra một đường dẫn từ gốc đến (xa nhất) một chiếc lá, do đó chúng tôi có một cây nhị phân có chiều sâu d<logn+1 (vì nó là một cây nhị phân hoàn chỉnh với n=2d1 đỉnh), chúng tôi thực hiện nhiều nhất 3dO(logn) thăm dò.

Trong trường hợp không được phân bổ, chúng ta không có điểm khởi đầu thuận tiện như vậy, tuy nhiên chúng ta vẫn có cấu trúc cây (ngay cả khi thuật toán không biết điều đó). Chúng ta có thể sử dụng thuật toán sau:

  1. Chọn bất kỳ đỉnh nào là đỉnh hiện tại ban đầu.
  2. Thăm dò nhãn của đỉnh hiện tại và tất cả các lân cận của nó.
  3. Nếu đỉnh hiện tại có nhãn thấp nhất, hãy dừng lại và báo cáo nó ở mức tối thiểu cục bộ.
  4. Khác, chọn hàng xóm có nhãn thấp nhất làm đỉnh hiện tại mới và quay lại bước 2.

Ở mỗi lần lặp, chúng tôi chỉ thực hiện tối đa 4 lần thăm dò, vì vậy câu hỏi là có bao nhiêu lần lặp có thể có? Chìa khóa là quan sát rằng chúng ta không bao giờ có thể quay lại (chúng ta biết rằng chúng ta đến từ một nhãn lớn hơn), vì vậy chúng ta phải đi theo một đường dẫn đơn giản trong biểu đồ, nhưng vì biểu đồ thực sự là một cây nhị phân hoàn chỉnh, đường dẫn đơn giản dài nhất có chiều dài2d. Do đó, ngay cả trong trường hợp không được phân bổ, chúng tôi thực hiện nhiều nhất8dO(logn) thăm dò.

Để cho chính xác, chúng tôi xem xét thuật toán thứ hai (trường hợp gốc rõ ràng chỉ là trường hợp đặc biệt của trường hợp không được phân bổ).

Thực tế là thuật toán không bao giờ có thể quay lại cũng đảm bảo chấm dứt, vì đồ thị là hữu hạn. Bây giờ chúng ta chỉ cần chứng minh rằng đỉnhvchúng tôi chấm dứt trên thực tế là tối thiểu địa phương. Giả sử mâu thuẫn rằng nó không phải, sau đó nó có một số hàng xómucó nhãn với giá trị thấp hơn. Chúng tôi có ba trường hợp: (1)u là đỉnh trước đó trong đường dẫn mà thuật toán đã theo, trong trường hợp đó là khi thuật toán ở u, nó sẽ không được chọn vlà đỉnh tiếp theo; (2)uđược xuất hiện trong đường dẫn, nhưng nhiều hơn một lần lặp lại trước đó, trong trường hợp này biểu đồ không phải là một cái cây; và (3)u Không phải là trong đường dẫn thuật toán theo sau, nhưng sau đó thuật toán sẽ chọn u là đỉnh tiếp theo trong bước 4 và thuật toán sẽ không kết thúc tại v. Như vậyv phải là tối thiểu địa phương.

Một cách khác để thấy điều này là chỉ cần quan sát rằng chuỗi các nhãn của các đỉnh được thuật toán chọn là giảm đơn điệu. Từ đó cả việc chấm dứt và tính đúng đắn ngay lập tức.

Chú thích:

  1. Thuộc tính cho phép điều này là mọi cây con đều có mức tối thiểu cục bộ - một lần nữa, mọi tập hợp hữu hạn có tổng thứ tự có một phần tử nhỏ nhất. Do đó, bằng cách cảm ứng, khi chúng ta mở rộng cây con bằng một gốc mới và cây con anh chị em, chúng ta có ba trường hợp: (1) gốc mới nhỏ hơn cả hai con của nó, vì vậy thuật toán sẽ chấm dứt gốc mới; (2) gốc mới nhỏ hơn một con nhưng không phải gốc khác, thuật toán sẽ không chọn gốc lớn hơn và phải lấy giá trị nhỏ nhất theo định nghĩa; hoặc (3) cả hai đứa trẻ đều nhỏ hơn, nhưng trong trường hợp này, như đã lưu ý, mỗi cây con có ít nhất một mức tối thiểu cục bộ, vì vậy chúng tôi có thể chọn một trong hai.

Một bằng chứng chính xác về thuật toán của bạn là mong muốn: Tại sao chúng ta có thể vứt bỏ cây con khác một cách an toàn và chỉ chọn con có nhãn nhỏ nhất? IMO, cần phải chứng minh rằng thuật toán của bạn sẽ tìm thấy một số tối thiểu cục bộ miễn là chúng tồn tại. Hơn nữa, một thuộc tính mạnh hơn có thể đúng: Mỗi cây nhị phân hoàn chỉnh có ít nhất một mức tối thiểu cục bộ.
hengxin

@hengxin (hy vọng) làm rõ.
Luke Mathieson

Tôi nghĩ rằng có một lỗ hổng trong lý do này vì các đầu dò O (log n) yêu cầu một số thứ tự trong việc chèn các giá trị của cây, để sự phân chia và chinh phục có thể phân biệt giữa đi sang trái và phải. Trong trường hợp này, ở bước 4 "chọn hàng xóm có nhãn thấp nhất" thực sự không chọn đường dẫn chính xác luôn vì không có thứ tự trong các giá trị cây (cực tiểu cục bộ có thể nằm trong cây con bên phải). Nếu có thứ tự khi chèn cây, thì nút cha luôn lớn hơn nút hiện tại, làm cho cực tiểu cục bộ chỉ tồn tại trên lá bên trái của cây.
Juan Zamora

Cormen et at (2011) định nghĩa rằng để một cây được coi là cây tìm kiếm nhị phân, nó phải có "thuộc tính cây tìm kiếm nhị phân" đòi hỏi một thứ tự nhất định trong phần chèn cây.
Juan Zamora

@JuanZamora Câu hỏi không phải là về cây tìm kiếm nhị phân, nó chỉ là về đỉnh được gắn nhãn cây nhị phân hoàn chỉnh. Thứ hai, ngay cả khi đó là về BST, đó là về việc tìm kiếm mức tối thiểu cục bộ , không phải mức tối thiểu toàn cầu.
Luke Mathieson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.