Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Надежность алгоритма. / 25 сообщений из 26, страница 1 из 2
14.08.2013, 22:26
    #38366888
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
Вот есть алгоритм:
Для каждого элемента из массива A[10,10] найти соответствующий ему в строке B[100];
Решение в лоб -> сравнение для каждого элемента столбца в каждой строке массива А с элементом из строки B.
Как доказать, что этот алгоритм всегда сработает? Или если пойти от "противного", какой возможен случай ошибки этого алгоритма.
-------------------
Да и вообще, для такой задачи, есть что-нибудь получше чем FullScan(FullSort, или как вам удобно)
...
Рейтинг: 0 / 0
14.08.2013, 22:44
    #38366904
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaКак доказать, что этот алгоритм всегда сработает?В общем случае - никак.
По этому обычно используют test cases.
Но если возможно, то индуктивное доказательство будет наилучшим решением.
...
Рейтинг: 0 / 0
14.08.2013, 22:49
    #38366906
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaВот есть алгоритм:
Для каждого элемента из массива A[10,10] найти соответствующий ему в строке B[100];
Решение в лоб -> сравнение для каждого элемента столбца в каждой строке массива А с элементом из строки B.
Как доказать, что этот алгоритм всегда сработает? Или если пойти от "противного", какой возможен случай ошибки этого алгоритма.
-------------------
Да и вообще, для такой задачи, есть что-нибудь получше чем FullScan(FullSort, или как вам удобно)
...
Рейтинг: 0 / 0
14.08.2013, 23:42
    #38366938
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaКак доказать, что этот алгоритм всегда сработает? Или если пойти от "противного", какой возможен случай ошибки этого алгоритма.
В массиве есть повторяющиеся элементы, и не всем им хватает копий в векторе.

Если в массиве нет повторяющихся элементов - алгоритм гарантированно работает. Если есть - необходимо исключать из вектора элементы, которые уже получили соответствия. В этом случае алгоритм также гарантированно работает.
eldarkaa для такой задачи, есть что-нибудь получше чем FullScan(FullSort, или как вам удобно)
Предварительная сортировка обеих массивов и затем параллельное сравнение. Сложность = сложности используемого метода сортировки.
...
Рейтинг: 0 / 0
15.08.2013, 00:34
    #38366967
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaКак доказать, что этот алгоритм всегда сработает?

Глуповатый какой-то вопрос...

eldarkaaИли если пойти от "противного", какой возможен случай ошибки этого алгоритма.

Что такое ошибка алгоритма? Элемент не найден это ошибка или один из вариантов работы алгоритма?


eldarkaaДа и вообще, для такой задачи, есть что-нибудь получше чем FullScan(FullSort, или как вам удобно)

да, разумеется есть
Код: plaintext
1.
getItem(int x, int y){ return flip(B)[A[x][y]]; } 
...
Рейтинг: 0 / 0
15.08.2013, 09:36
    #38367070
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
Lumix, что же Вы себя утруждаете, не нравиться вопрос - проходите мимо!
Лучше бы словами сказали какой алгоритм/метод получше для данной задачи.
Akina Предварительная сортировка обеих массивов и затем параллельное сравнение. Тут подразумевается многопоточность или просто сравнение?
Массивы отсортирован(он в форме треугольника, строчки с меньшими элементами первые) и там нет одинаковых значений для каждой строчки. После совпадения элементов, я их удаляю(они "уникальны") из строки массива и вектора, так как возможны другие совпадение таких же элементов в следующих строках.
...
Рейтинг: 0 / 0
15.08.2013, 10:04
    #38367093
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaДля каждого элемента из массива A[10,10] найти соответствующий ему в строке B[100];
Решение в лоб -> сравнение для каждого элемента столбца в каждой строке массива А с элементом из строки B.гм.
У меня другое решение "в лоб".
если x,y - индексы массива А, а z-индекс массива B, то
между ними есть взаимно-однозначное соответствие 10*(x-1)+y=z
т.е. по x,y можно найти z, и по z можно найти x,y.
...
Рейтинг: 0 / 0
15.08.2013, 10:36
    #38367134
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaТут подразумевается многопоточность или просто сравнение?
Мы обсуждаем алгоритм, а многопоточность - это уже реализация.
Не, просто "сравнить следующий из массива и следующий из вектора". А линеаризация массива в вектор (и при сортировке, кстати) - в точности как пишет S.G. .

А вот "массив в форме треугольника" - это, право слово, загадка...
...
Рейтинг: 0 / 0
15.08.2013, 10:42
    #38367149
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
S.G.eldarkaaДля каждого элемента из массива A[10,10] найти соответствующий ему в строке B[100];
Решение в лоб -> сравнение для каждого элемента столбца в каждой строке массива А с элементом из строки B.гм.
У меня другое решение "в лоб".
если x,y - индексы массива А, а z-индекс массива B, то
между ними есть взаимно-однозначное соответствие 10*(x-1)+y=z
т.е. по x,y можно найти z, и по z можно найти x,y.

Если мне не изменяет память, если писать на С,
то к массиву A[10,10] через указатель можно обращаться как к массиву A[100].

Задача своидтся к сравнению элементов 2-х массивов одниковой размерности.
...
Рейтинг: 0 / 0
15.08.2013, 11:37
    #38367230
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
Я не думал, что дальше тема зайдет. У меня просто не Массив, а Список списков A.
Просто думал, что так наглядней будет в качестве примера.
Словами "в форме треугольника" хотел показать, что будут и отсутствующие элементы.
Массив плох тем, что с ним нельзя работать. Добавлять/изменять/удалять. В моем случае я могу использовать списки или множества.
S.G.если x,y - индексы массива А, а z-индекс массива B, то
между ними есть взаимно-однозначное соответствие 10*(x-1)+y=z
т.е. по x,y можно найти z, и по z можно найти x,y.
Уж простите, но не очень понятно как это реализовать для списков.
...
Рейтинг: 0 / 0
15.08.2013, 11:44
    #38367245
?
?
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
AkinaПредварительная сортировка обеих массивов и затем параллельное сравнение. Сложность = сложности используемого метода сортировки.Можно отсортировать только второй массив, потом использовать двоичный поиск для каждого элемента из первого. Сложность такая же.
...
Рейтинг: 0 / 0
15.08.2013, 11:47
    #38367252
Lumix
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaLumix, что же Вы себя утруждаете, не нравиться вопрос - проходите мимо!

При чем тут нравится / не нравится?

eldarkaaЛучше бы словами сказали какой алгоритм/метод получше для данной задачи.

Слепой что ли?!!! Я уже дал готовый кусок кода в качестве решения задачи!!!
...
Рейтинг: 0 / 0
15.08.2013, 11:52
    #38367261
ПЕНСИОНЕРКА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaa,

а что содержится в (а) и (в)
каков тип данных
одинаковый или потребуется преобразование
...
Рейтинг: 0 / 0
15.08.2013, 11:59
    #38367279
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaЯ не думал, что дальше тема зайдет. У меня просто не Массив, а Список списков A.
Просто думал, что так наглядней будет в качестве примера.
Словами "в форме треугольника" хотел показать, что будут и отсутствующие элементы.
Массив плох тем, что с ним нельзя работать. Добавлять/изменять/удалять. В моем случае я могу использовать списки или множества.
S.G.если x,y - индексы массива А, а z-индекс массива B, то
между ними есть взаимно-однозначное соответствие 10*(x-1)+y=z
т.е. по x,y можно найти z, и по z можно найти x,y.
Уж простите, но не очень понятно как это реализовать для списков.

Можно работать с массивом по всем пунктам которые вы считаете невозможными.
Вопрос цены ресурсов.
Если у вас элементов будет не более 100 то массив может оказаться быстрее потому,
что полоностью влезет в кеш процессора.
А список как цепочка указателей вероятнее всего нет и обращение
будет происходит с скоростью работы с оперативной памятью .
...
Рейтинг: 0 / 0
15.08.2013, 12:01
    #38367282
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
вот весь код(результат и цели от примера)
http://www.sql.ru/forum/1041305/refaktoring
В этом разделе я хотел поднять вопрос только о том, как показать, что алгоритм выполняется правильно или нет. Что не произойдет не предвиденных ошибок.
Только WhiteOwl ответил по теме.
WhiteOwlВ общем случае - никак.
По этому обычно используют test cases.
Но если возможно, то индуктивное доказательство будет наилучшим решением.
Все остальные перекинулись на алгоритм. Алгоритм это 2ая часть вопроса, но тут уже вылезают подробности реализации и думаю, надо прекратить обсуждать здесь, а то и дальше будут присылать геттеры с непонятной функцией
Мастер мыслиgetItem(int x, int y){ return flip(B)[A[x][y]]; }
...
Рейтинг: 0 / 0
15.08.2013, 12:03
    #38367288
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
ДохтаР, говорят Список списков будет [2000+][10], но это тоже не комильфо, учитывая что в каждой строчке значения уникальные, но они могу повторяться в разных строчках..... если будет время, загляните в другой топик, тут заканчиваем.
...
Рейтинг: 0 / 0
15.08.2013, 12:05
    #38367295
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaвот весь код(результат и цели от примера)
http://www.sql.ru/forum/1041305/refaktoring
[/quot]

Можете не обращать внимание на 14712076

Я не не в курсе что и как там работает в Джаве.
...
Рейтинг: 0 / 0
15.08.2013, 12:06
    #38367297
ДохтаР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaaДохтаР, говорят Список списков будет [2000+][10], но это тоже не комильфо, учитывая что в каждой строчке значения уникальные, но они могу повторяться в разных строчках..... если будет время, загляните в другой топик, тут заканчиваем.


Извините , Я не спец по джаве и не планирую им становится.
...
Рейтинг: 0 / 0
15.08.2013, 12:09
    #38367302
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
Я использовал треугольные массивы для "матриц смежностей" в графах
и для "треугольника паскаля". Если я правильно улавливаю сам термин
конечно.
...
Рейтинг: 0 / 0
15.08.2013, 13:22
    #38367452
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
?AkinaПредварительная сортировка обеих массивов и затем параллельное сравнение. Сложность = сложности используемого метода сортировки.Можно отсортировать только второй массив, потом использовать двоичный поиск для каждого элемента из первого. Сложность такая же.Ага... а про то, что
eldarkaaвозможны другие совпадение таких же элементов в следующих строках.т.е. после сортировки - в массиве, забываешь, да?
...
Рейтинг: 0 / 0
15.08.2013, 14:30
    #38367582
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
mayton,
Вы его спутали с треугольной матрицей . Речь идет о треугольном Массиве, у которого строки имеют разное количество элементов(столбцов). Тему хороните! (хватит апать!)
...
Рейтинг: 0 / 0
15.08.2013, 15:22
    #38367669
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
Так?
Код: javascript
1.
2.
3.
4.
5.
6.
0 0 0 0 0 0
0 0 0 0 0
0 0 0 0
0 0 0
0 0
0
...
Рейтинг: 0 / 0
15.08.2013, 18:14
    #38368051
eldarkaa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
он самый, пожалуйста, если хотите продолжить беседу переползайте в другой топик. Эту надо похоронить уже.
Да, реализация пишется на Java, но ничто не мешает обсудить сам алгоритм там!
Буду очень благодарен, если есть идеи как обходить такой Массив(Список списков) правильно и быстро.
...
Рейтинг: 0 / 0
15.08.2013, 18:36
    #38368086
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
eldarkaa, не говори загадками. Что где? Какой топик? Мне что, перечитать все твои посты с 2012 года?
...
Рейтинг: 0 / 0
15.08.2013, 19:04
    #38368113
S.G.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Надежность алгоритма.
maytoneldarkaa, не говори загадками. Что где? Какой топик? Мне что, перечитать все твои посты с 2012 года?mayton,
это здесь: eldarkaaвот весь код(результат и цели от примера)
http://www.sql.ru/forum/1041305/refaktoring
В этом разделе я хотел поднять вопрос только о том, как показать, что алгоритм выполняется правильно или нет.
но там оказывается, что данные расположены в XLS-файле, то есть Йексель, (причем тут списки и массивы, непонятно) а далее ТС любезно предлагает всем разобраться в нескольких портянках кода, с кучей циклов.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Надежность алгоритма. / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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