Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой алгоритм. / 14 сообщений из 14, страница 1 из 1
19.08.2013, 16:35:41
    #38370927
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Допустим. Есть просто алгоритм, который проходит все значения в Массиве А и сравнивает со всеми значениями в Векторе Б. То есть для каждого элемента из А, ищет похожий в Б, и так далее. Удаляет, модифицирует, не важно.
(теперь забудьте о терминах).
1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива")
2. Может в таких ситуациях и нужен JUnit, Mockito в Java?
...
Рейтинг: 0 / 0
19.08.2013, 17:41:05
    #38371016
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Mockito здесь вообще не нужен. Ну просто ни разу не нужен.
...
Рейтинг: 0 / 0
19.08.2013, 18:02:57
    #38371042
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Правильный ответ на этот вопрос - показать набора продуманных модульных тестов. Здесь как применяется JUnit.
...
Рейтинг: 0 / 0
19.08.2013, 18:04:58
    #38371045
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Если очень хочется, можно применить какой-нибудь анализатор тестового покрытия и показать - вот дескать, у меня проверяются все if!
https://github.com/cobertura/cobertura - вроде бы она умеет делать такой анализ.
...
Рейтинг: 0 / 0
19.08.2013, 18:10:56
    #38371060
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
eldarkaa 1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива")
Не существует аналитического доказательства которое-бы подтвердило что произвольный алгоритм работает
правильно. Модульные тесты лишь охватывают некое подмножество входных данных и УТВЕРЖДАЮТ что
для них этот алгоритм даёт верный ответ. Эти штуки покрывают 99% запросов бизнеса по юнит-тестированию.

Попытка-же втолкнуть в утверждения формулу или более сложное выражение порождает новую проблему а
именно - как проверить проверяющего и т.д.
...
Рейтинг: 0 / 0
19.08.2013, 18:23:58
    #38371077
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
eldarkaaлогика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива"Попросите его указать, в каких частях массива не работает "мало сравнений".
...
Рейтинг: 0 / 0
19.08.2013, 18:35:55
    #38371093
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
eldarkaa 1. Как доказать аналитически что данный алгоритм работает так, как предполагается?

"Аналитически" это путём вычислений и умозаключений. "Допустим массив имеет длинну N..." и понеслась.
Доказательство правильности алгоритма не гарантирует правильность его реализации и работы на отдельно взятом языке программирования в отдельно взятой среде выполнения.

eldarkaa (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива")

"много" и "все работает" - не технические термины.
"много" может быть достаточно велико, что никаких накопителей не хватит. Конечно не будет работать.
"все" не есть результат работы алгоритма.

eldarkaa 2. Может в таких ситуациях и нужен JUnit, Mockito в Java?
Нет. Юнит-тесты проверяют ограниченые единицы кода, позволяя выявлять проблемы, вызваные изменениями, но не обнаруживаемые компилятором.
...
Рейтинг: 0 / 0
19.08.2013, 20:21:50
    #38371198
just_vladimir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Может быть речь о формальной верификации алгоритмов, там смутно припоминается что то предусловие, постусловие, инвариант вместе с фамилиями типо Дейкстры :-) Или не то?
...
Рейтинг: 0 / 0
20.08.2013, 02:07:55
    #38371381
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
...
Рейтинг: 0 / 0
20.08.2013, 08:08:23
    #38371423
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
eldarkaaДопустим. Есть просто алгоритм, который проходит все значения в Массиве А и сравнивает со всеми значениями в Векторе Б. То есть для каждого элемента из А, ищет похожий в Б, и так далее. Удаляет, модифицирует, не важно.
(теперь забудьте о терминах).
1. Как доказать аналитически что данный алгоритм работает так, как предполагается? (логика постановщика вопроса такая: "если у меня сравнения много, как я могу быть уверен, что все работает на протяжении всего массива")


Доказать правильность алгоритма возможно для любого алгоритма.
Гуглить по словам "Доказательное программирование".
Только время на доказательство правильности алгоритма уйдет гораздо больше, чем на сам алгоритм.
Грубо говоря - "Проще сделать, чем доказать, что сделано правильно"

eldarkaa 2. Может в таких ситуациях и нужен JUnit, Mockito в Java?

Э-э-э скажем так:
Область определения и область значений функции это не одно и то же что и функция.
Аналогично с Юнит-тестами.
Вы определяете только "область определения" и "область значения" алгоритма.
Верность или не верность алгоритма вы определить не можете.
Т.е. то что у вас нужная "функция" вы не знаете.
...
Рейтинг: 0 / 0
20.08.2013, 12:07:49
    #38371734
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Ахахаха!

Формальная Верификация(wiki) - по ссылкам от Доказательного программированияДоказательство может быть автоматизировано полностью лишь для очень небольшого круга простых теорий , поэтому важное значение получает его автоматическая проверка и для этого преобразование к проверяемому виду.

Для поддержания строгости при проверке доказательства верификатором следует проверить ещё и верификатор, для чего нужен ещё один верификатор и так далее. Получившуюся бесконечную цепь верификаторов можно было бы свернуть, построив верифицирующий себя верификатор, обладающий способностью развернуться до применимого на практике.
...
Рейтинг: 0 / 0
20.08.2013, 12:25:23
    #38371770
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
да спасибо тем, кто отвечал, думал тема утонет.
Сегодня утром пробежал по ссылкам и понял, что для моей мини-программы писать верификторы или воспользоваться автоматическим доказательством — доказательство, реализованное программно,в основе лежит аппарат математической логики и теория ИИ, не вариант.
Пожалуй пойду поучу JUnit (и еще одного найденного зверя Java PathFinder), может этого будет достаточно для решения вопроса...
...
Рейтинг: 0 / 0
20.08.2013, 13:05:36
    #38371849
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
Забей в кальян в ebook JUnit. Покури и будет тебе щастьте. Реально.
...
Рейтинг: 0 / 0
20.08.2013, 13:48:40
    #38371919
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Простой алгоритм.
eldarkaaда спасибо тем, кто отвечал, думал тема утонет.
Сегодня утром пробежал по ссылкам и понял, что для моей мини-программы писать верификторы или воспользоваться автоматическим доказательством — доказательство, реализованное программно,в основе лежит аппарат математической логики и теория ИИ, не вариант.
Пожалуй пойду поучу JUnit (и еще одного найденного зверя Java PathFinder), может этого будет достаточно для решения вопроса...

Об чем и речь ;-)
Доказательное программирование умерло не успев родиться.

TDD и в частности JUnit "повеселее", но не гарантирует "правильности" программы.
Только то, что программа проходит тесты.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Простой алгоритм. / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]