分析算法輸出和結果的人是否應該知道其設計?
通過分析我的意思是找到算法失敗並返回錯誤結果的情況。算法設計和分析分離
1
A
回答
1
有兩種類型的測試,首先是技術測試,以確保代碼體現算法功能,特別是在設計規定的邊界內,特別是在邊緣情況下。
第二種形式是功能測試,以查看算法創建的輸出是否符合設計意圖。爲此,您不一定需要了解執行情況,並且有一個合理的理由可以說,如果您不這樣做,它會更客觀。
當然,如果算法是微不足道的,並且所有可能的結果都可以知道,那麼測試它只是一個生成測試數據的問題,這些測試數據會執行邊界條件。
但是,根據算法,這可能是不可能的。如果該算法正在分析一個難以形象化的空間(比如27個維度和1M個數據點)中的數據,那麼只有微不足道的情況才能測試功能的準確性。如果分析中沒有單一的「正確」答案,那麼情況就會變得更糟,而是一系列可能的結果。在這些情況下,需要有經驗的分析師來看結果,看看它們是否有意義。有時候,這是實現代碼的同一個人,有時候不是。在這些情況下,實施幾乎肯定會在試圖理解結果時受到質疑,而結果本身就很複雜。
所以,如果可能的話,簡短的回答是肯定的,但它並不總是必須的算法是完全可以解釋的。
1
有兩種不同類型的單元測試:
- 黑箱
- 的Glassbox
兩者都是非常重要的。 Blackbox測試應該完全基於函數的文檔(其陳述的輸入,其陳述的前提條件,陳述的輸出,陳述的後置條件,以及在出現這種錯誤時陳述的錯誤案例和行爲/結果)編寫。 Glassbox測試試圖確保實現的所有分支都正確工作,並且需要查看實現。這些測試通常爲每個執行分支提供一些示例輸入。
至於分析...通常當人們談論「算法分析」時,他們不是在談論某個特定的實現,而是對該算法的理論分析,通常使用它的僞代碼,通常是爲了這個目的證明算法的正確性,以及在最壞情況或預期情況下運行時間的上限。這種分析通常需要僞代碼(或者至少是其他形式的算法行爲描述)來推理和證明它的性質。
相關問題
- 1. 算法的設計和分析?
- 2. 聚類分析的距離計算
- 3. 分析和計算用C
- 4. 計算能力集算法分析
- 5. 設計和分析的線性時間算法
- 6. 算法分析
- 7. 用pl/sql計算6度分離的算法和查詢?
- 8. 如何爲受控實驗分析算法設置計算機?
- 9. 需要幫助設計算法的語法分析器
- 10. 命名空間設計和類分離
- 11. GCD - 歐幾里德算法和分解算法分析
- 12. 類型分離(API設計)
- 13. 分析和計算使用的JavaCC
- 14. 分析和計算給定條件
- 15. Bison分析器計算器
- 16. 拓撲層分離算法
- 17. 圖像的分離和分析
- 18. 解析器和詞法分析器的設計指南?
- 19. 使用MapReduce或其他分佈式計算方法進行分析計算?
- 20. 分頁計算算法
- 21. 面向對象的分析和設計
- 22. 如何迭代分析和設計
- 23. 分別計算Levenshtein距離算法中刪除的數量
- 24. 3D Pathfinding AI算法推薦和分析
- 25. NLP:語言分析技術和算法
- 26. Flex(詞法分析器){+}和{ - }運算符
- 27. 分析和理解這個算法
- 28. 算法分析和結構識別
- 29. 算法分析(big-O)算法
- 30. SQL語法總和計數列計算百分比分佈