簡體   English   中英

輸入為 O(n log n) 時算法的時間復雜度

[英]Time complexity of algorithm when input is O(n log n)

我有一個在 O(m) 時間內運行的算法。 該算法接收一組包含 m 個條目的數據。

通過指定嚴格的正整數輸入 n 隨機生成數據。 生成的條目數為 O(n log n)。

編輯

單獨地,生成數據的時間復雜度與 n(或 O(1))無關,這意味着給定整數 n,條目會立即隨機生成。 結果條目的數量是隨機的,但是是 O(n log n)。 例如 n = 10,那么生成的條目數是某個常數乘以 10(日志 10)。

數據是事先生成的。 然后將得到的 m 個條目作為輸入輸入到算法中。

然后我可以假設算法在 O(n log n) 時間內運行嗎?

您的問題中有一些含糊不清的地方,要么是有意幫助您內化輸入大小和運行時復雜性之間的關系,要么是由於溝通不暢造成的。

所以盡我所能解釋這個場景:


您的算法復雜度O(m)相對於 m是線性的。

因此,由於We assume that generating the data is independent of input. ie O(1). We assume that generating the data is independent of input. ie O(1). ,您的時間復雜度僅取決於您指定的生成條目的某些n

所以是的,您可以說該算法在O(n log n)時間內運行,因為它對大小為m的輸入沒有任何作用。


針對您更新的問題:

仍然很難理解,因為一些關鍵詞指的是不同的東西。 但總的來說,我認為這就是你所得到的:

  • 給定一些特定的 n,您有一個數據集作為輸入,大小為 O(n log n)。
  • 該數據集僅用作輸入,它要么是預先生成的,要么是使用一些在 O(1) 時間內運行的黑盒生成的,而不管給黑盒的 n 是多少。 (我們對這個問題的黑匣子不感興趣)
  • 然后將該數據集饋送到我們真正有興趣分析的算法中。
  • 對於大小為 m 的輸入,該算法的時間復雜度為 O(m)。
  • 由於您的輸入相對於 n 的大小為 O(n log n),那么通過擴展,您的 O(m) 線性時間算法的時間復雜度為 O(n log n),相對於 n。

查看差異:假設您的算法不是線性的,而是二次 O(m^2),那么它相對於 n 的時間復雜度為 O(n^2 log^2 n)。

暫無
暫無

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

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