2012-09-12 57 views
3

我正在嘗試準備一個演示文稿,向我的同事解釋算法分析的基礎知識 - 他們中的一些人從來沒有關於此主題的講座,但每個人都至少有幾年的編程背後和良好的數學背景,所以我想我可以教這個。我可以很好地解釋這些概念,但我需要一些代碼結構或模式的具體示例,這些代碼結構或模式會導致一些因素,以便我可以證明它們。幾何因素(n,n^2,n^3等)很容易,嵌入循環使用相同的哨兵,但我迷失於如何描述和炫耀一些不太常見的東西。您如何在代碼中獲得各種算法分析因素?

我想結合指數(2^n或C^N),對數(正數(n)或剛的log(n))和factoral在演示文稿(N!)因素。什麼是簡短的,可教的方式來獲得這些代碼?

回答

3

一個分而治之的算法,在每次將問題分成一半的時間內完成恆定的工作量是O(log n)。例如二進制搜索。

分而治之的算法,每次將問題分成一半時執行線性工作量是O(n * log n)。例如合併排序。

指數和階乘可能通過分別遍歷集合的所有子集或集合的所有排列來最好地說明。

2

n!問題很簡單。有很多NP-complete n!時間問題如the travelling salesman problem

+0

怪才:它不是證明旅行商實際上需要階乘時間,因爲沒有證明P = NP。當然,它可以在不多於階乘時間的情況下完成:-) –