|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Наткнулся на интересную задачку, навеяно вопросом тут: 22245400 Из заданного множества пар, выбрать эксклюзивные по заданному критерию. Например, Адам, Джон, Игорь и Карл подружились с Евой, Сю, Лиа и Кэт. В таблице представлены взаимные симпатии (колонки М,Ж и степень симпатии) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Задача: поженить как можно больше этих людей по критерию максимального общего счастья (арифметической суммы симпатий). Закомментированная строчка представляет усложненный вариант задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 17:49 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Задачу коммивояжера тут уже решали, воспользуйтесь поиском. И это... Нафиг такие усложнения, у меня, быть может, фобия. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:02 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
НеофитSQL, какая-то нетолерантная задача. мнение Евы в этом маскулинном мире полностью игнорируется. Видимо, у неё нет шансов отказаться, как, вероятно, и у несчастного Igor-a... Вы точно из Маями ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:15 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
andrey_anonymous Задачу коммивояжера тут уже решали, воспользуйтесь поиском. И это... Нафиг такие усложнения, у меня, быть может, фобия. Вы зря отмахиваетесь, не разобравшись. Задача коммивояжера - NP. Эта задача - P. Разный класс задач, эта задача намного проще, и она хорошо известна под другим именем. Попробуйте без PL/SQL решить. booby, вы так осведомлены ;) Я живу немного к северу, в районе для белых. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 18:37 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
НеофитSQL, элементарная задачка с кучей уже опубликованных решений на форуме. еще одно just for fun Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39.
booby Вы точно из Маями ? НеофитSQL Я живу немного к северу, в районе для белых. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 19:41 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
xtender, Задачка для меня новая, поэтому я с интересом с ней повозился, решил тоже рекурсивно на моем 11.2. Разбираюсь с вашим решением в 28 строк, там несколько конструкций которые мне незнакомы. А какие еще были решения? У меня не получилось найти через sql.ru поиск. Напишите поисковую строку, если вам удалось. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 19:57 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
xtender, У вас в коде ошибка, дает неверный ответ для Код: plsql 1. 2. 3. 4. 5. 6.
Там рекурсия начинается со строки высокого рейтинга, ошибочно полагая что оно будет включено в оптимальное решение. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8.
В моем решении я использовал пустышку для нулевой строки, может это и здесь можно сделать. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 20:17 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Моя попытка, вроде правильно работает. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 20:57 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
НеофитSQL У вас в коде ошибка Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:09 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
xtender НеофитSQL У вас в коде ошибка Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
Должно быть Код: plaintext 1. 2. 3. 4.
для полного счастья. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:14 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
тьфу, так ты упрощенный рюкзак решал что ли? даже внятно задачу поставить не можешь... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:15 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
xtender тьфу, так ты упрощенный рюкзак решал что ли? даже внятно задачу поставить не можешь... > Задача: поженить как можно больше этих людей по критерию максимального общего счастья (арифметической суммы симпатий). Если вы решали другую задачу, в какой версии задачи "6" является правильным ответом? У вас код правильно ищет максимум перебором, но ошибочно выбирает первую пару, поэтому попадает на локальный максимум. Я не знаю что такое упрощенный рюкзак, но погуглю. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:26 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
В вашем примере, если я заменю отмеченные строки на "from p", это что-то сломает? Я не уловил, в чем логика воссоздания уже существующей таблицы p через кросс-джойны, и как "rownum>0" что-то делает. Вроде как рекурсия будет дольше работать, в конце дожигая nulls которых в таблице p ранее не было. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.12.2020, 21:36 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Погуглил knapsack problem. Нет, это не та. Задача рюкзаков, и ее модификации отличаются от задач нахождения эксклюзивных пар по критерию. Она еще известна как задача нахождения некасающихся ребер графа. В варианте (М,Ж) - направленного графа, эта задачка менее обсосана в учебниках, но совместными силами мы ее вроде решили через SQL. Кто-то хочет попробовать силы в решении более, ээ, либерального варианта задачки? У меня есть пара идей, но я подожду до понедельника. Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.12.2020, 18:30 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
НеофитSQL Кто-то хочет попробовать силы в решении более, ээ, либерального варианта задачки? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
я английский плохо знаю если ==> select 'John', 'Igor', 9 from dual union all про гомиков то не пойму чем ето усложняет задачу, если решать перебором ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 13:22 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Stax, речь идет о том, что его нужно исключить из списка пригодных к спариванию мужчин, после того, как на него пал выбор. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 14:07 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Stax, Появлением иерархий и циклов. А ещё может оказаться, что рёбра графа не изотропны в зависимости от направления обхода и тогда задача станет окончательно запутанной. Код: plsql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 15:12 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
booby, env я наверное неправильно выразился имел ввиду, простой/грубый перебор сущеструющих пар, без оптимизации и выбрать с максимальной сумарной выгодой ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 15:34 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
да без разницы, задача один хрен остается такой же скучной на перебор - подвид рюкзачных - упрощенная задачка о корзинках НеофитSQL Задача коммивояжера - NP. Эта задача - P. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 15:44 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Stax, выбирается такая последовательность с максимальной суммой, которая содержит допустимый, непротиворечивый список пар. Не только ведущие мужчины в наборе не должны повторяться, но и ведомые женщины тоже. Когда без разницы, это называется "шведская семья". Здесь шведская не подразумевается. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 15:55 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
booby, да какая разница, если пары не генерить, берем только предоставленные (готовые), для других симпатия=0 подружили кого-то, больше их (обоих, кроме 'Adam', 'Adam' не знаю как толерантно написать) не берем ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 16:12 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Stax ... берем только предоставленные (готовые)... ..... stax алгоритм такой: взяв такую пару, разрешаем ей быть элементом результата, если ни левый, ни правый элемент еще не был выбран ранее, иначе отбрасываем. Из всего набора результатов выбираем результат с максимальной оценкой. Жадный алгоритм будет работать просто на сортированном по текущей стоимости наборе наборе пар и вернет единственную комбинацию. Алгоритм с соединниями множеств сгенерит все возможные комбинации, дающие максимальный результат. "простая" задача решается путем ведения двух списков имен - раздельно для "мужчин" и "женщин". "сложная" - ведением одного, общего списка имен, и в этом отношении, она как раз проще "простой" - проверка на существование при выборе следующей пары происходит в одном списке, вместо двух. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 16:27 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
booby "сложная" - ведением одного, общего списка имен, и в этом отношении, она как раз проще "простой" - проверка на существование при выборе следующей пары происходит в одном списке, вместо двух. так я ж об етом и для "простой" можно обойтисть одним списком, вперемешку (м,ж) зі двойной список нужен для вывода результата (или нужен ид пар) ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 16:52 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
xtender да без разницы, задача один хрен остается такой же скучной на перебор Обычно задачу называют скучной или простой, решив ее без ошибок. У вас пока этого не получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 17:00 |
|
Нахождение эксклюзивных пар
|
|||
---|---|---|---|
#18+
Stax booby "сложная" - ведением одного, общего списка имен, и в этом отношении, она как раз проще "простой" - проверка на существование при выборе следующей пары происходит в одном списке, вместо двух. так я ж об етом и для "простой" можно обойтисть одним списком, вперемешку (м,ж) зі двойной список нужен для вывода результата (или нужен ид пар) ..... stax Я тоже думаю что один список - это более чистое решение задачи чем помещение гомов в оба списка, с последующим исключением дубликатов. Второе решение довольно просто записать, первое (с единым списком) я пока не пробовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2020, 17:04 |
|
|
start [/forum/topic.php?fid=52&msg=40027040&tid=1880607]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 166ms |
0 / 0 |