Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonВ актуальной ревизии https://github.com/Dmitriy-GH/remove20th/blob/master/remove20th.cpp Я-бы ввел некую сущность под названием Graph Код: plaintext 1. и передавал бы ее в функции-предикаты. Например. Вместо. Код: plaintext 1. Ввел-бы Код: plaintext 1. 2. 3. Предикаты соотв. проверяют подграфы на сбалансированность по весу. Но я не настаиваю. А то со стороны выглядит будто я заставляю тебя подгонять код под Callgrind. Я в принципе всегда стараюсь писать код максимально разбитым на элементарные фунции. Единственный кейс когда я этого не делал - в карточном трассировщике - просто для сохранения оригинального подобия к исходнику Гекберта. на обощенный Graph это не тянет, т.к. речь о вполне конкретной фигуре и даже твой isHorizontalGraphBalanced() это тоже о конкретной фигуре. Твоя идея посчитать количество вызов каждого sum == ... в корне неверная. Вызов std::next_permutation() или next_combination() намного тяжелее чем это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 16:41 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonНапример. Вместо. Код: plaintext 1. .... А почему сразу не посчитать Код: plaintext 1. и сравнить с массивом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 16:41 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Вы не поймете. Выж математик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 16:44 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovА как же красота алгоритма? Самый красивый алгоритм - не оптимизированный Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Под спойлером рабочий код, все предельно понятно, но считать будет несколько недель. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 16:57 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Dima TТвоя идея посчитать количество вызов каждого sum == ... в корне неверная. Вызов std::next_permutation() или next_combination() намного тяжелее чем это. Давай избавимся от permutation. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 17:29 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
И у нас в воздухе провис вопрос о количестве решений. Или их 16. Или их больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 17:32 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonDima TТвоя идея посчитать количество вызов каждого sum == ... в корне неверная. Вызов std::next_permutation() или next_combination() намного тяжелее чем это. Давай избавимся от permutation. Как? Это оптимальная реализация, моя переделка в циклы заметно тормознее получилась. Загугли " размещения алгоритм ", везде аналогичный подход. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 17:49 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonИ у нас в воздухе провис вопрос о количестве решений. Или их 16. Или их больше. Ровно 16, иначе можно утверждать что задача не решена, т.к. исключить можно только одно число. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 17:50 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonИ у нас в воздухе провис вопрос о количестве решений. Или их 16. Или их больше.В сообщении 21795098 показано, что количество решений задачки кратно 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 18:11 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Gennadiy UsovmaytonИ у нас в воздухе провис вопрос о количестве решений. Или их 16. Или их больше.В сообщении 21795098 показано, что количество решений задачки кратно 8. Может быть 24 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 18:16 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonGennadiy UsovВ сообщении 21795098 показано, что количество решений задачки кратно 8. Может быть 24 ?Всё возможно. Хотя Dima T уже всё посчитал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 18:26 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Проверим. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 18:46 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonГлупый codeblocks. Где в нём рефакторинг? Где extract procedure... Установил Clion. Рефакторит получше. Хотя я сделал авто-форматирование последней версии сорца. Получилась такая некислая лесенка.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 20:19 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Дима а прокомментируй плиз зачем тут так много сорцов. Какой из них - актуален? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.01.2019, 21:09 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Здесь говорили, но не стали реализовывать 2-й вариант, через систему ур-й. Кратко озвучиваю это. Ибо вопрос темы звучит "как решить задачу". Я поздно присоединился, но в итоге результат не получился, хотя и перепроверял несколько раз. По этому случаю только краткую схему на тему насколько легко это можно сделать в экселе (систему саму получить, а потом по свободным переменным получать решения). В общем, нарисовал на листке неоднородную систему наших 12 линейных ур-ний с 15-ю переменными. Поскольку из предварительного анализа X1= одно из 2-х значений, то их вынес в параметры алгоритма, ну т.е. приравнял тоже к константе. Если надо, запускаем два раза и все дела. Эти шаги нетрудно запрограммировать. Значит, таблицу к-тов заносим в матрицу 12х15, приводим к "диагональному" виду. Получилось как на вложенном рисунке (справа там ещё есть преобразованный константный вектор (S-Y-X1-18-12-6)). Почему-то свободных переменных осталось 5. Далее 2 варианта действий. 1) полный перебор A(5,15)=360360, вопрос фигнядля программы. 2) воспользоваться эвристиками и сузить перебор. Я воспользовался, остались 54 варианта, но увы ... Прогу диагонализации писать неохота, ибо в прошлом такое на бумаге делал мильоны раз. Но сделать это легче всего в VBA. Просто привожу свой полуручной неправильный, видимо, вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 01:54 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Уточню. Исходный константный вектор без Y-лишнее: (S-X1-18-12-6), X1 - центр, S - сумма каждого пути. Вектор тоже преобразуется по мере диагонализации. Просто для радиальныхх ур-й X1 изначально присутствует, а для остальных вместо него 0. Аналогично и с остальными константами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 02:03 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Я рисовал граф. Но граф не особо нужен так как топология слабо учитывается. Тут скорее важно учесть реляционное отображение вершин на подграфы и контролировать частичные суммы. Тоесть помаркировал вершину (Vertex) числом - и синхронно добавил это число к суммам всех связных подграфов. Видя что граф - игрушка а не необходимость я - охладел. Чуть позже возможно я выкачу своё решение. Но я не люблю репризы. И никогда не копирую чужие сорцы просто так. Нужна оригинальная идея. Иначе выходить на сцену бесполезно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 02:11 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
maytonДима а прокомментируй плиз зачем тут так много сорцов. Какой из них - актуален? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. remove20th.cpp основной remove20th_nooptimize.cpp перебор 2*15! комбинаций remove20th_trash.cpp без вызовов std::next_permutation() и next_combination() тебе для профилирования удалил последние два ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 07:25 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Если кому система уравнений нужна, то вот она Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Также доказано что Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 07:33 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Если поможет: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 07:56 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Dima T, можно упростить систему уравнений. если ввести переменные а1,а2,а3: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. То есть, получается 12 уравнений и 12 неизвестных [/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 09:03 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Dima T, вот теперь верно: можно упростить систему уравнений. если ввести переменные а1,а2,а3: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. То есть, получается 12 уравнений и 12 неизвестных [/quot] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 09:07 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
Еще не помешает указать что Код: plaintext 1. 2. 3. Еще вместо sum написать 3*x[1] и можно решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 09:30 |
|
||
|
Как решить задачу по комбинаторике?
|
|||
|---|---|---|---|
|
#18+
На самом деле, 12 уравнений и 12 неизвестных – это не совсем точная информация. Часть из этих уравнений использовалась для определения sum и x[1] 21793339 . Так что, если строго, была использована ещё одна выборка по sum и часть уравнений для определения x[1]. Следовательно, этих 12 уравнений не достаточно для определения 12 неизвестных. Поэтому, необходимо эти 12 уравнений преобразовать в определения n неизвестных при наличии выборки m чисел. n + m + 3 = 15. Часть уравнений из 12 не дадут новой информации, а будут использоваться для проверки найденных чисел. Тогда можно будет точно сказать, сколько необходимо выборок.Dima TЕще не помешает указать что Код: plaintext 1. 2. 3. Еще вместо sum написать 3*x[1] и можно решать.Данные уравнения можно дописать к 12 уравнениям. но они пока не нужны. Их можно будет использовать после определения а1, а2, а3. Про sum я уже сказал в начале сообщения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.01.2019, 11:11 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=39765659&tid=1339994]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 274ms |
| total: | 438ms |

| 0 / 0 |
