簡體   English   中英

如何證明以下算法的正確性?

[英]How to prove a correctness of this following algorithm?

一家家具店正在銷售:以較昂貴的價格購買兩件。 約翰剛搬到新家,沖進商店,選擇了2k家具:f1,f2,...,f2k-1,f2k。 這些項目分別定價為p1,p2,...,p2k-1,p2k。 幫助約翰成對布置家具,以使2k件物品的總成本降至最低。 建議在O(klogk)中運行的算法,證明其正確性和運行時間。

好的,這聽起來並不復雜:首先,我將按價格對所有2k家具進行排序,然后將每個單元格與其相鄰的單元格一對,取O(klogk)。

我如何證明我建議的正確性? 我想過要假設有更多的最小解決方案並引起矛盾,但我不知道如何證明這一點。 tnx很多!

您要購買所有2k家具,因此每件家具都是一對。 現在,讓我們按價格降序考慮零件。 最昂貴的一塊將需要成對出現,並且由於最昂貴,它將比成對的另一塊更昂貴。 因此,您可以免費購買任何家具。 讓我們假設最佳解決方案將最昂貴的商品與價格X組合在一起,並進一步假設該商品不是價格第二的商品(我們將其表示為第二價格S)。 現在,S將成對出現,並且這對貨幣的價格不可能高於S的價格。現在,如果我們更改S和X的位置,那么所有貨幣對的價格都將變為X,而X曾經是而S過去的那個將保持不變。 由於S現在是具有最昂貴元素的組,因此這對的價格也保持不變。 至於X現在所在的那對-它不可能增加,因為那將意味着X比S更昂貴,這是矛盾的。

因此,新的解決方案也是最佳的,因此始終存在一種解決方案,其中將最昂貴的元素與倒數第二個元素組合在一起。 現在,您可以使用歸納法來證明您的方法的正確性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM