Khi nào cây bao trùm tối thiểu cho biểu đồ không phải là duy nhất


22

Cho một đồ thị có trọng số, không có hướng G: Những điều kiện nào phải giữ đúng để có nhiều cây bao trùm tối thiểu cho G?

Tôi biết rằng MST là duy nhất khi tất cả các trọng số đều khác biệt, nhưng bạn không thể đảo ngược tuyên bố này. Nếu có các cạnh mulipl có cùng trọng số trong biểu đồ, có thể có nhiều MST nhưng cũng có thể chỉ có một:

nhập mô tả hình ảnh ở đây

Trong ví dụ này, biểu đồ bên trái có MST duy nhất nhưng biểu đồ bên phải thì không.

Cách gần nhất tôi có thể tìm thấy các điều kiện cho tính không độc đáo của MST là:

Hãy xem xét tất cả các chordless chu kỳ (chu kỳ không chứa chu kỳ khác) trong đồ thị G. Nếu trong bất kỳ các chu kỳ cạnh trọng tối đa tồn tại nhiều lần, sau đó đồ thị không có một cây bao trùm nhỏ nhất độc đáo.

Ý tưởng của tôi là trong một chu kỳ như thế này

nhập mô tả hình ảnh ở đây

với n đỉnh, bạn có thể bỏ qua chính xác một trong các cạnh và vẫn có tất cả các đỉnh được kết nối. Do đó, bạn có nhiều lựa chọn để loại bỏ cạnh có trọng số cao nhất để có MST, vì vậy MST không phải là duy nhất.

Tuy nhiên, sau đó tôi đã đưa ra ví dụ này:

nhập mô tả hình ảnh ở đây

Bạn có thể thấy rằng biểu đồ này có một chu kỳ phù hợp với điều kiện của tôi: (E, F, G, H) nhưng theo như tôi có thể thấy, cây bao trùm tối thiểu là duy nhất:

nhập mô tả hình ảnh ở đây

Vì vậy, có vẻ như điều kiện của tôi không đúng (hoặc có thể không hoàn toàn chính xác). Tôi rất trân trọng bất kỳ trợ giúp nào trong việc tìm kiếm các điều kiện cần và đủ cho tính không độc đáo của cây bao trùm tối thiểu.


1
Chu kỳ nhỏ nhất của bạn được gọi là chu kỳ không hợp âm (nhiều hay ít).
Yuval Filmus

Câu trả lời:


10

trong hình đầu tiên: đồ thị bên phải có MST duy nhất, bằng cách lấy các cạnh và với tổng trọng số là 2.( F , G )(F,H)(F,G)

Cho một đồ thị và để cho là một cây bao trùm nhỏ nhất (MST) trong .G=(V,E)GM=(V,F)G

Nếu tồn tại cạnh với trọng số sao cho thêm vào MST của chúng ta sẽ tạo ra chu kỳ và cho cũng là trọng số cạnh thấp nhất từ , sau đó chúng ta có thể tạo MST thứ hai bằng cách hoán đổi một cạnh từ với trọng số cạnh với . Do đó chúng tôi không có sự độc đáo.w ( e ) = m e C m F C F C m đe={v,w}EFw(e)=meCmFCFCme


Bạn nói đúng, tôi đã sửa biểu đồ đó trong câu hỏi ngay bây giờ. Bạn có biết đây là điều kiện chung nhất để MST không phải là duy nhất không? Hoặc nó cũng có thể được xác định bằng cách nào đó mà không cần phải tìm MST trước?
Keiwan

1
@Keiwan Tôi tin rằng nếu bạn tính đến câu hỏi này thì điều kiện được nêu trong câu trả lời này cũng là điều kiện cần thiết để có nhiều MST. Nói cách khác: một đồ thị có nhiều MST khi và chỉ khi việc xây dựng được nêu ra bởi HueHang có thể được thực hiện. G
Bakuriu

1
m không phải là trọng lượng cạnh thấp nhất từ ​​F∩C. Trên thực tế, nó chỉ có thể là trọng lượng cạnh cao nhất, nếu không thì M sẽ không được tối thiểu ở vị trí đầu tiên. Giả sử có một cạnh e 'với w (e') = m '> m = w (e) trong F∩C. Sau đó trao đổi e cho e 'sẽ để lại một cây bao trùm với tổng trọng lượng nhỏ hơn M, mâu thuẫn với mức tối thiểu của M.
Chad

2

Một câu trả lời trước chỉ ra một thuật toán để xác định xem có nhiều MST hay không, với mỗi cạnh không nằm trong G , hãy tìm chu trình được tạo bằng cách thêm e vào MST được tính toán trước và kiểm tra xem e có phải là cạnh nặng nhất trong chu kỳ đó không. Thuật toán đó có khả năng chạy trong thời gian O ( | E | | V | ) .eGeeO(|E||V|)

Một thuật toán đơn giản hơn để xác định xem có nhiều MST của G trong độ phức tạp thời gian O(|E|log(|V|)) .

 1. Chạy thuật toán của Kruskal trên để tìm MST m .Gm

 2. Thử chạy Thuật toán Kruskal trên nữa. Trong lần chạy này, bất cứ khi nào chúng ta có sự lựa chọn giữa các cạnh có trọng lượng bằng nhau, trước tiên chúng ta sẽ thử các cạnh không tính bằng m , sau đó chúng ta sẽ thử các cạnh theo m . Bất cứ khi nào chúng tôi tìm thấy một cạnh không trong m kết nối hai cây khác nhau, chúng tôi tuyên bố rằng có nhiều MST, chấm dứt thuật toán.Gmmm

 3. Nếu chúng tôi đã đạt đến đây, thì chúng tôi khẳng định rằng có MST duy nhất.G

Một lần chạy thông thường của thuật toán Kruskal mất thời gian . Việc lựa chọn thêm các cạnh không tính bằng m có thể được thực hiện trong thời gian O ( | E | ) . Vì vậy, thuật toán đạt được độ phức tạp thời gian O ( | E | log ( | V | ) ) .O(|E|log(|V|))mO(|E|)O(|E|log(|V|))

Tại sao thuật toán này có thể xác định nếu có nhiều MST?

Giả sử chúng ta có một MST đó không phải là giống như m . Điều đó đủ để chỉ ra rằng thuật toán chạy trên G sẽ không đạt được bước 3, vì cạnh được tìm thấy ở cuối bước 2, không nằm trong m và kết nối hai cây khác nhau sẽ được đưa vào MST do chúng tôi chạy Kruskal thuật toán để hoàn thành. Hãy w là trọng lượng lớn như vậy mà cho bất kỳ cạnh có trọng lượng ít hơn w , nó là trong m khi và chỉ khi nó là trong m ' . Bởi vì mm ' có cùng số cạnh của trọng lượng w , có tồn tại cạnh của cânmmGmwwmmmmw có trong m ' nhưng không phải trong m . Nếu thuật toán đã thoát trước khi xử lý các cạnh của các cạnh đó, chúng ta đã hoàn thành. Nếu không, giả sử dụng thuật toán là sẽ xử lý cạnh đầu tiên e ' trong số những cạnh bây giờ. Đặt S là tập hợp tất cả các cạnh đã được bảo tồn cho đến nay được đưa vào MST kết quả. S m . Kể từ khi các thuật toán có không thành cạnh xử lý của trọng lượng w không m như e ' , nó phải chưa bắt đầu chế biến cạnh trọng lượng w trong m . Vì vậy, các cạnh trong SwmmeSSmwmewmScân nặng ít hơn . Điều đó có nghĩa S m ' . Nhớ lại rằng e ' là trong m ' . Kể từ { e ' } S m ' , nơi m ' là một cây, e ' phải kết nối hai cây khác nhau trong S và các lối ra thuật toán vào thời điểm này.wSm.em{e}SmmeS

Lưu ý về sự phát triển tiếp theo
Bước 1 và bước 2 có thể được xen kẽ để chúng ta có thể chấm dứt thuật toán càng sớm càng tốt mà không cần xử lý các cạnh có trọng số lớn hơn.
Trong trường hợp bạn muốn tính toán số MST, bạn có thể kiểm tra câu trả lời về cách tính số MST .


1

Đặt là đồ thị được kết nối không giới hạn có trọng số đơn giản (hữu hạn) có ít nhất hai đỉnh. Đặt ST có nghĩa là cây bao trùm và MST có nghĩa là cây bao trùm tối thiểu. Hãy để tôi xác định một số thuật ngữ ít phổ biến đầu tiên.G

  • Một cạnh là nặng nhất theo chu kỳ nếu nó là cạnh nặng nhất trong một số chu kỳ.
  • Một cạnh là không nặng nhất theo chu kỳ nếu nó không bao giờ là cạnh nặng nhất trong bất kỳ chu kỳ nào.
  • Một cạnh là duy nhất - cắt - nhẹ nhất nếu đó là cạnh nhẹ nhất để vượt qua một số vết cắt.
  • Một cạnh là không cắt - nhẹ nhất nếu nó không bao giờ là cạnh nhẹ nhất để vượt qua bất kỳ vết cắt nào.
  • Hai ST liền kề nhau nếu mọi ST có chính xác một cạnh không nằm trong ST khác.
  • MST là MST bị cô lập nếu nó không liền kề với MST khác (khi cả hai MST được coi là ST).

Khi có nhiều hơn một cây bao trùm tối thiểu?

Để trả lời câu hỏi của OP, đây là năm đặc điểm của có nhiều hơn một MSTG .

  • Có hai MST liền kề.
  • Không có MST bị cô lập.
  • Có một ST nhẹ hoặc nhẹ hơn tất cả các ST liền kề và nhẹ như một ST liền kề.
  • Có một cạnh không nặng nhất theo chu kỳ hoặc không nặng nhất theo chu kỳ.
  • Có một cạnh không phải là độc nhất - cắt - nhẹ nhất hoặc không cắt - nhẹ nhất

Tính mới của câu trả lời này chủ yếu là hai đặc điểm cuối cùng. Thứ hai từ đặc tính hóa cuối cùng có thể được coi là bước tiếp theo của phương pháp của OP . Ba đặc tính đầu tiên cùng nhau có thể được coi là một phiên bản nâng cao của câu trả lời của dtt .

Suy nghĩ ngược lại sẽ dễ dàng hơn, liệu có MST duy nhất hay không. Dưới đây là phiên bản ngược lại và tương đương của các đặc tính trên.G

Khi nào cây bao trùm tối thiểu là duy nhất?

G

  • Tính duy nhất của MST : Có một MST duy nhất.
  • Không có MST liền kề : không có MST liền kề.
  • Một MST bị cô lập : có một MST bị cô lập.
  • Một ST tối thiểu cục bộ : có một ST nhẹ hơn tất cả các ST liền kề.
  • Cạnh chu kỳ cực đoan : mọi cạnh đều nặng nhất theo chu kỳ hoặc nặng nhất theo chu kỳ.
  • Cạnh cắt cực kỳ : mọi cạnh đều là độc nhất - cắt - nhẹ nhất hoặc không cắt - nhẹ nhất

Đây là bằng chứng của tôi.

"Tính duy nhất của MST" => "Không có MST liền kề": hiển nhiên.

"Không có MST liền kề" => "Một MST bị cô lập": hiển nhiên.

"Một MST bị cô lập" => "Một ST tối thiểu cục bộ": MST bị cô lập nhẹ hơn tất cả các ST liền kề.

m

  • Mỗi cạnh trong phải không nặng nhất theo chu kỳ. Đây là bằng chứng. Cho l 2 . Đặt tên cho cạnh đómlmllclmmm1m2m1m2lcm1m2lmm1m2lGmmmmlll
  • Mỗi cạnh không tính bằng phải là chu kỳ nặng nhất. Đây là bằng chứng. Hãy h ' là một cạnh không m . Nếu chúng ta thêm hmhmhmchchmmhhmmmmhhhch

"ST tối thiểu cục bộ" => "Cực hạn cắt": Bằng chứng được để lại như một bài tập.

meememm

"Extreme cut edge" => "Tính duy nhất của MST": Bằng chứng được để lại như một bài tập.

Các chuỗi hàm ý trên chứng minh định lý.

Một lần nữa, tính mới của câu trả lời này chủ yếu là thuộc tính "cực kỳ chu kỳ" và thuộc tính "cực hạn cắt", sử dụng các khái niệm, không nặng nhất theo chu kỳ và không cắt nhẹ nhất. Tôi chưa thấy những khái niệm đó ở nơi khác, mặc dù chúng khá tự nhiên.


Dưới đây là hai quan sát thú vị liên quan.

  • ee e e
  • ee e e

Hai điều kiện đủ nhưng không cần thiết cho MST duy nhất

ab1,bc1,cd1,da2,ac2

1,1,2

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.