偶然複雜度

偶然複雜度(Accidental complexity)是指電腦軟件開發過程中所引入不必要的複雜度。偶然複雜度不是待求解問題的本質,相對而言, 本質複雜度和待求解問題的本質有關,是無法避免的。偶然複雜度一般是因為選用求解問題的方法時所引入的[1]

有時偶然複雜度可以歸因於像無效的規劃等錯誤,不過有時偶然複雜度是求解問題時伴隨產生的副作用。例如因為記憶體用完而產生的複雜度是一種偶然複雜度,但只要決定使用電腦求解問題,就會存在這種複雜度。

好的軟件架構、設計及實現可以將偶然複雜度降到最低,過多的偶然複雜度是一個反面模式的例子。

參考資料