[英]A way to prove that there's no greedy algorithm that obtains optimal solution?
問題很簡單。 我需要證明沒有貪心算法能夠為給定問題獲得最優解。
我不清楚是否存在問題必須滿足的任何條件,因此存在某種貪婪算法以獲得最優解。 或者,如果有足夠的條件使問題無法通過貪婪算法解決。
我正在談論貪婪的色彩:
我需要證明沒有貪心算法能夠為給定問題獲得最優解。
那么,這取決於您選擇的屬性的定義。
看一下圖形着色問題的例子,並假設你有一個給出部分彩色圖形的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.