簡體   English   中英

一種證明沒有貪婪算法可以獲得最優解的方法嗎?

[英]A way to prove that there's no greedy algorithm that obtains optimal solution?

問題很簡單。 我需要證明沒有貪心算法能夠為給定問題獲得最優解。

我不清楚是否存在問題必須滿足的任何條件,因此存在某種貪婪算法以獲得最優解。 或者,如果有足夠的條件使問題無法通過貪婪算法解決。

我正在談論貪婪的色彩:

http://en.wikipedia.org/wiki/Greedy_coloring

我需要證明沒有貪心算法能夠為給定問題獲得最優解。

那么,這取決於您選擇的屬性的定義。

看一下圖形着色問題的例子,並假設你有一個給出部分彩色圖形的oracle M ,當且僅當它有圖形着色時才返回true。

現在,使用這個oracle,一個貪婪的算法可以如下:

for each vertex v:
   for each color c:
        temporarly color v with c
        run M on partially colored graph
        if M yields true, make c constant to v, and abort the inner loop

上述算法根據oracle M的答案,以貪婪的方式對圖形着色,一次選擇一個頂點。 (選擇M的最佳答案並將其分配給每個頂點和顏色,其中答案集為false或true)

是不是覺得作弊? 可能,因為沒有已知的M在多項式時間內運行,但是如果你運行一個創建M的指數算法,那么它肯定是一種貪婪的算法。

然而,您可以證明在多項式時間(或任何其他多項式算法)中貪婪選擇的KNOWN算法不會產生圖形着色的最佳答案,因為圖形着色是NP完全的,我們不知道任何有效解決NPC問題的算法(並且大多數人認為這種問題不存在)。

但是,如果在某些時候我們將證明P = NP,我們可以有效地計算M ,並且我們將得到一個有效的貪婪算法來解決圖着色。

貪婪,在哲學層面上是這種現象,當屬性的持有者在短期內思考並忽略長期收入時。 我們可以看到,這不是一個定義明確的概念。 算法如何貪婪? 如果我們不知道其貪婪的本質,那么我們就沒有辦法證明它沒有獲得最優解。 而且,獲得最優解的概念是模糊的。 這可能意味着它永遠不會獲得最優解,或者它可能意味着至少存在無法獲得最優解的情況。 我建議記錄問題,理解問題,然后開始思考如何再次證明這一點。

暫無
暫無

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

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