Должны ли люди, анализирующие выход и результаты алгоритма, знать о его дизайне?
По анализу я имею в виду поиск случаев, когда алгоритм завершился неудачей и привел плохие результаты.Разделение и анализ алгоритмов
ответ
Существует два типа испытаний: сначала технические испытания, чтобы убедиться, что код, воплощающий функции алгоритма, особенно в границах, определенных дизайном, и особенно в краевых случаях.
Вторая форма - функциональное тестирование, чтобы увидеть, соответствуют ли выходы, создаваемые алгоритмом, намерениям проекта. Для этого вам необязательно знать о реализации, и есть разумный аргумент, чтобы сказать, что это делается более объективно, если вы этого не сделаете.
Конечно, если алгоритм тривиально и все возможные результаты могут быть известны, то тестирование это просто вопрос создания тестовых данных, которые выполняли граничные условия.
Однако, в зависимости от алгоритма, это может быть невозможно. В тех случаях, когда алгоритм анализирует данные в пространстве, которое не просто визуализируется (скажем, имеет 27 измерений и 1 М данных), тогда только тривиальные случаи могут быть проверены на функциональную точность. Это ухудшается, если нет единого «правильного» ответа от анализа, а есть множество правдоподобных результатов. В этих случаях опытный аналитик должен посмотреть на результаты, чтобы понять, имеют ли они смысл. Иногда это тот же человек, который реализует код, иногда нет. В этих случаях реализация будет почти наверняка поставлена под сомнение при попытке понять результаты, которые будут сложными.
Итак, короткий ответ - да, если это возможно, но это не всегда необходимо для того, чтобы алгоритм был полностью объяснимым.
Есть два различных типа модульного тестирования:
- Blackbox
- GlassBox
Оба невероятно важны. Тесты Blackbox должны быть написаны исключительно на основе документации по функции (ее заявленные входы, заявленные предварительные условия, заявленные результаты, заявленные постусловия и заявленные ошибки и поведение/результаты в случае возникновения таких ошибок). Тестирование Glassbox пытается обеспечить правильную работу всех ветвей внедрения и требует рассмотрения реализации. Такие тесты обычно предоставляют несколько примеров ввода для каждой ветви исполнения.
Что касается анализа ... Обычно, когда люди говорят об «алгоритмическом анализе», речь идет не о конкретной реализации, а скорее о теоретическом анализе алгоритма, обычно использующем его псевдокод и обычно для этой цели проверки правильности алгоритма и верхней границы его наихудшего или ожидаемого времени работы. Такие анализы обычно требуют псевдокода (или, по крайней мере, какого-либо другого формального описания поведения алгоритма), чтобы обосновать и доказать свойства об этом.
- 1. Анализ алгоритмов - Асимптотический анализ
- 2. Анализ алгоритмов
- 3. Разделение и анализ изображения
- 4. Анализ производительности алгоритмов кластеризации
- 5. Как выполнить анализ алгоритмов
- 6. Анализ сложности алгоритмов
- 7. Анализ алгоритмов - математическая модель
- 8. псевдо Полином анализ алгоритмов
- 9. Анализ алгоритмов сортировки вложений
- 10. Анализ алгоритмов в TAOCP
- 11. Анализ сложностей алгоритмов Confusion
- 12. Анализ алгоритмов (сложность)
- 13. Анализ подтверждения нотации алгоритмов
- 14. Loop Analysis - Анализ алгоритмов
- 15. Анализ алгоритмов - доказательство анонимной функции
- 16. Анализ заявлений двух разных алгоритмов
- 17. Анализ алгоритмов - ожидаемые темпы роста
- 18. Анализ алгоритмов: объяснение Big-O
- 19. Анализ алгоритмов, сложность времени алгоритма
- 20. Анализ двух-двух алгоритмов Big-O
- 21. Анализ производительности для алгоритмов на встроенных устройствах
- 22. Анализ алгоритмов, какой из них правильный?
- 23. Использование памяти в среднем случае - анализ алгоритмов
- 24. Анализ алгоритмов, которые включают в себя циклы
- 25. анализ изображения: разделение пересекающихся спагеттиков
- 26. Сравнение алгоритмов Rete и последовательных алгоритмов
- 27. Анализ алгоритмов: почему средний анализ случая зависит от вероятности и распределения входов
- 28. Структуры данных и книга алгоритмов для C
- 29. Анализ одного выровненного текстового файла и его разделение разделителями
- 30. Powershell/Excel - анализ/разделение и экспорт в excel