• 枚舉算法

    編輯
    本詞條由“匿名用戶” 建檔。

    什么是枚舉算法

    編輯

    計算機科學中,枚舉算法是一種對計算問題的答案進行枚舉的算法。從形式上看,這種算法適用于接受一個輸入并產生一個解決方案列表的問題,類似于函數問題。對于每個輸入,枚舉算法必須產生所有解決方案的列表,沒有重復的,然后停止。枚舉算法的性能是以產生解決方案所需的時間來衡量的,可以是產生所有解決方案所需的總時間,也可以是兩個連續解決方案之間的xxx延遲,還可以是預處理時間,算作輸出xxx個解決方案前的時間。這種復雜性可以用輸入的大小、每個單獨輸出的大小或所有輸出集合的總大小來表示,與輸出敏感算法的做法類似。

    常見的復雜性類

    編輯

    在計算復雜性理論的背景下,枚舉問題已經被研究過了,并且已經為這類問題引入了幾個復雜性類。一個非常普遍的類是EnumP,這類問題的可能輸出的正確性可以在輸入和輸出的多項式時間內被檢查出來。形式上,對于這樣的問題,必須存在一個算法A,它將問題輸入x,候選輸出y作為輸入,并以x和y的多項式時間解決y是否為輸入x的正確輸出的決策問題。其他被定義的類包括如下。在同樣屬于EnumP的問題的情況下,這些問題從最小到xxx體排序輸出多項式,這類問題的完整輸出可以在多項式時間內計算出來。增量多項式時間,這類問題,對于所有的i,第i個輸出可以在輸入大小和數字i的多項式時間內產生。多項式延遲,這類問題中兩個連續輸出之間的延遲是輸入的多項式(與輸出無關)。強多項式延遲,這類問題中每個輸出前的延遲是這個特定輸出大小的多項式(與輸入或其他輸出無關)。通常假設預處理是多項式的。恒定延遲,這類問題中每個輸出前的延遲是恒定的,即與輸入和輸出無關。預處理階段一般假設為輸入的多項式。常用技術回溯。列舉所有解決方案的最簡單方法是系統地探索可能的結果空間(在每個連續的步驟中對其進行分割)。然而,這樣做可能不能很好地保證延遲,也就是說,回溯算法可能會花很長的時間去探索部分可能的結果空間,而這些結果并不能產生一個完整的解決方案。閃光搜索。這種技術通過探索所有可能的解決方案的空間來改進反向追蹤,但在每一步都要解決當前的部分解決方案是否可以擴展為部分解決方案的問題。如果答案是否定的,那么算法可以立即回溯,避免浪費時間,這使得它更容易顯示任何兩個完整解決方案之間的延遲保證。

    枚舉算法

    特別是,這種技術很適用于自還原問題。集合操作下的封閉。如果我們希望列舉兩個集合的不相交的聯合,那么我們可以通過列舉xxx個集合,然后列舉第二個集合來解決問題。如果聯合體不是不相交的,但是這兩個集合可以按照排序的順序進行枚舉,那么可以在兩個集合上并行地進行枚舉,同時快速消除重復的集合。如果聯合體不是不相交的,并且兩個集合都沒有被排序,那么可以以更高的內存使用率為代價來消除重復的部分,例如使用哈希表。同樣,兩個集合的笛卡爾乘積也可以通過列舉一個集合并將每個結果與列舉第二步時得到的所有結果連接起來來有效地列舉。

    內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/163456/

    (4)
    詞條目錄
    1. 什么是枚舉算法
    2. 常見的復雜性類

    輕觸這里

    關閉目錄

    目錄
    91麻精品国产91久久久久