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

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

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

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

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

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


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

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

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

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

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

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

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


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