這是非常困難的一般。
你會實驗評估在單變量情況下的運行時間,插入遞增,當你的數據結構做了基本的(推定O(1)
)操作,然後拿數據爲許多不同的輸入大小計數器的常用方法,和劇情它在一個log-log
情節。那就是,log T
與。如果運行時間的形式爲n^k
,則應該看到一條直線斜率爲k
,或者接近此值。如果運行時間如T(n) = n^{k log n}
或其他什麼,那麼你應該看到一個拋物線。如果T
在n
處於指數狀態,您仍然應該看到指數增長。
你只能希望得到有關最高階項的信息,當你做到這一點 - 低位條款得到過濾掉,在具有越來越少的影響,因爲n
變大的感覺。
在這兩個變量的情況下,你可以嘗試做一個類似的方法 - 本質上,採取3維數據,做一個log-log-log
情節,並嘗試適應飛機。
但是,如果真的只有一個主導詞在大多數政權中占主導地位,那麼這隻會真正起作用。
假設我的實際功能是T(n, m) = n^4 + n^3 * m^3 + m^4
。
當時m = O(1)
,然後T(n) = O(n^4)
。 當時n = O(1)
,然後T(n) = O(m^4)
。 當時n = m
,然後T(n) = O(n^6)
。
在這些方案的每一箇中,沿着可能的平面的「切片」值,不同的術語之一是主導術語。
所以沒有辦法確定功能,只是從固定的m
和固定的n
獲得一些點。如果你這樣做了,你不會得到n = m
的正確答案 - 你將無法發現像這樣的「中等」主要條款。
我建議,最好的辦法預測漸近增長,當你有很多的變量/複雜的數據結構,是用鉛筆和一張紙,並做傳統算法分析。或者可能是一種混合方法。試圖打破效率的問題,爲不同的部分 - 如果你可以分裂的問題分成幾個不同的功能和或產品,也許他們中的一些你可以在抽象的決定,以及一些你可以實驗估算。