Форум программистов, компьютерный форум, киберфорум
Алгоритмы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
1

Равномерное распределение чисел в ряду

18.10.2016, 18:42. Показов 6481. Ответов 34
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.

Имеется обычный ряд чисел.
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Необходимо равномерно и как можно максимально отдалить соседей друг от друга...
Перебором на бумажке у меня получается так:
[1, 4, 7, 2, 5, 8, 3, 6, 9]

то есть в среднем разница между соседями составляет 3. Есть проблемы:

1. Нет алгоритма. Реально цифр может быть и больше и меньше.
2. Не уверен, что это самый лучший вариант.

Пожалуйста, помогите...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2016, 18:42
Ответы с готовыми решениями:

Равномерное распределение чисел временного ряда
Здравствуйте. Есть временной ряд чисел. Дано количество классов N. Необходимо каждому члену...

Равномерное распределение значений в массиве
Есть одномерный массив с целочисленными значениями. Пусть будет 1 и 0 (16 единиц и 14 нулей): ...

Равномерное распределение нагрузок по фазам
Дан некий набор однофазных нагрузок (токов). Необходимо распределить нагрузки по трем фазам, то...

Равномерное распределение
При измерении большого земельного участка его длина округляется до ближайшего целого числа метров....

34
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
18.10.2016, 22:17 2
9,5,1,6,2,7,3,8
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
18.10.2016, 22:20  [ТС] 3
ProgJ, спасибо.

У Вас получилось лучше вроде бы. Между цифрами в среднем 4, и, кстати, 4 пропущено, но можно последней записать.

А есть какая то математика в этой задачи, или Вы тоже просто перебором?

Хотя не совсем лучше. У меня между цифрами 1, 2, 3, 4, 5, 6, 7 по две цифры... У Вас одна....
0
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
18.10.2016, 22:23 4
Для четных n:
n/2+1, 1, n/2+2, 2, ...
Разница равна n/2
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
18.10.2016, 22:24  [ТС] 5
У меня распределение все таки лучше, по задаче надо как можно дальше отделить соседей....
0
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
18.10.2016, 23:18 6
Тогда, сначала пишите все нечетные, потом все четные числа
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.10.2016, 13:11  [ТС] 7
ProgJ, спасибо. А можно чуть-чуть подробнее, не совсем понимаю, что надо сделать...
0
90 / 87 / 11
Регистрация: 20.11.2008
Сообщений: 724
19.10.2016, 13:28 8
1,3,5,7,9,2,4,6,8
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.10.2016, 13:50  [ТС] 9
Мне кажется, мое распределение более равномерно. В моем случае между соседними членами исходного ряда 2 цифры, а разница между соседями полученного ряда = 3 и нет такой провала между 9 и 2 (разница 7).... нужно равномерно и максимально....
0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,470
19.10.2016, 15:37 10
Цитата Сообщение от Antohsa Посмотреть сообщение
Мне кажется, мое распределение более равномерно.
Об этом нельзя судить до тех пор, пока Вы не задали чёткие критерии "равномерности".

Задачу нахождения минимума нельзя решить, пока не известно, что именно нужно минимизировать.
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.10.2016, 18:52  [ТС] 11
Я не знаю, как описать...

Давайте я тогда проще расскажу, что мне надо. Мне надо перемещать колоду карт как можно качественнее. Как это сделать? И как оценить качество. Наверное, хочется, чтобы карты одного достоинства лежали как можно дальше друг от друга, также хотелось бы, чтобы соседние карты (например, для вальта это дама и 10) были также как можно дальше друг от друга в колоде, и при всем при этом масти не должны совпадать, то есть желательно, чтобы двух подряд одинаковых мастей не было. Самый лучший расклад будет один, вернее скорее всего три, так как противоположный мастей нет, другими словами черви обратны бубнам, крестям и пикам.

В моей примере я просто хочу наиболее качественнее перемещать карты одной масти.
1 - это 6, 2 - это 7, 3-8, 4-9, 5-10, 6-J, 7-Q, 8-K, 9-А.

В моей раздаче получается:
6, 9, Q, 7, 10 K, 8, J, А

У ProgJ:
6, 8, 10, Q, А, 7, 9, J, K

Видно, что 6,8,10,Q, тем более подряд распределение намного хуже, чем 6, 9, Q, 7.

Я просто никак не могу найти нужную мне математику и алгоритм...
0
1487 / 1414 / 240
Регистрация: 19.02.2010
Сообщений: 3,916
19.10.2016, 21:25 12
Цитата Сообщение от Antohsa Посмотреть сообщение
Необходимо равномерно и как можно максимально отдалить соседей друг от друга...
Сортировка, разбиение отсортированного списка пополам, и последовательное перечисление-чередование элементов из обоих половин (первый из первой, первый из второй, второй из первой, второй из второй, третий из первой, третий из второй,..).
Равномерность результата будет зависеть только лишь от равномерности распределения исходных чисел. Т.е. если из некоторых рамок [min,max] числа берутся не все и/или разное число раз - то вышеописанный способ равномерности не даст / не гарантирует.
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
19.10.2016, 22:11 13
Fisher–Yates shuffle с хорошим PRNG.
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.10.2016, 22:43  [ТС] 14
gazlan, этот метод точно не подходит, так как никакого рендома быть не должно. Самая лучшая комбинация явно должна быть лишь одна (в задаче с картами одной масти), то что Вы предлагаете по сути делает Collections.shuffle() в Java.

VTsaregorodtsev , попробовал Ваш алгоритм:
[1, 5, 2, 6, 3, 7, 4, 8, 9] .

1,2,3,4 - через цифру.... 8, 9 - подряд.
Мой вариант опять же лучше..... =((((((
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
19.10.2016, 23:14 15
Цитата Сообщение от Antohsa Посмотреть сообщение
лучшая комбинация явно должна быть лишь одна (в задаче с картами одной масти)
Гм. Все, что вам доступно - это парные перестановки. Условно - Unsort(). Можно предположить, что если Sort() уникальна, то двойственная ей Unsort() тоже уникальна (Unsort = Sort-1). Если это так, вы должны предоставить Fitness-функцию, которая позволит оптимизировать перебор. Для (очень) ограниченного набора такую метрику можно построить и вычислить. Но будет ли она унимодальной...
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
19.10.2016, 23:24  [ТС] 16
gazlan, мне бы по рабоче крестьянски как нибудь объяснить... я не все слова в Вашем посте понимаю.. =((

Боюсь,что unsort делает тоже самое, что shuffle...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
19.10.2016, 23:52 17
Я не знаю, что делает Unsort - это гипотетическая функция. Но если бы у вас была функция оценки качества расстановки и качество расстановки было бы функцией с единственным максимумом, то (каким-либо методом оптимизации) можно было бы добиться того же результата, как и действия функцией Unsort - наилучшей расстановки.

Иными словами, ваша задача разделяется на две:
  • Убедиться что функция качества расстановки имеет единственный максимум (Я, напротив, уверен, что это не так - у вас комбинаторная задача и число "лучших" расстановок будет экспоненциально расти с увеличением размера набора)
  • Построить метрику оценки качества расстановки (на это уже указывал Shamil1).
Имея метрику (при условии единственного максимума), вы сможете
  • Оценить качество предложенной (например, случайной) расстановки
  • Использовать оптимизационный алгоритм (например, генетический) для улучшения этой оценки

Возможно также, что единственность максимума необязательна, например, существует N эквивалентных с точностью до симметрии "лучших" расстановок.
0
8 / 12 / 0
Регистрация: 18.10.2016
Сообщений: 115
20.10.2016, 00:29  [ТС] 18
Да, наверное, Вы правы. Будут существовать симметричные расстановки, либо даже закольцованные.

Вроде бы получилось сформулировать оценку качества.

1. Необходимо между цифрами начальной последовательности разместить как можно больше других цифр.
2. Разность между соседними цифрами новой последовательности должна стремиться к максимальному.

С девятью числами максимальное и равномерное число цифр, которое можно вставить между соседями = 3. Не знаю как это доказать.
Получается вот так: [1] [ ] [ ] [ ] [2] [ ] [ ] [ ] [3].

Разности между числами получаются: 8,7,6,5,4,3,2,1. В среднем получим 4.5, думаю, что это теоретический максимум. То есть средняя разность между соседними цифрами в пункте 2 должна стремится к 4.5.

Вроде так...

Добавлено через 15 минут
Понимаю, что основная проблема в том, что я не могу четко сформулировать задачу...
0
3176 / 1935 / 312
Регистрация: 27.08.2010
Сообщений: 5,131
Записей в блоге: 1
20.10.2016, 00:38 19
Для 9 чисел доказать, наверное, можно и перебором. Заодно, найдете и группу симметрий. Возможно, разность лучше оценивать среднеквадратичным отклонением от среднего.

Не по теме:

Вспомнилось, еще про "энергетическое" моделирование, типа Фолдинг белка. Может быть, наведет на мысль :-)

0
Модератор
Эксперт функциональных языков программирования
3051 / 2193 / 459
Регистрация: 26.03.2015
Сообщений: 8,470
20.10.2016, 09:19 20
Цитата Сообщение от Antohsa Посмотреть сообщение
Мне надо перемещать колоду карт как можно качественнее.
Качественно перемешанная колода - это когда карты расположены в случайном порядке. Когда, глядя на карту, ничего нельзя сказать про следующую.

Признаки того, что колода перемешана отвратительно:
1. За валетом не может идти дама
2. Если давно не было червей, то вероятность выпадения червы резко повышается

p.s. Конечно, это относится только к случаям, когда колода тасуется для игры (а не для любования и т.п.)
0
20.10.2016, 09:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.10.2016, 09:19
Помогаю со студенческими работами здесь

Равномерное распределение
Всем доброго времени суток!!! Есть список работ на месяц. Нужно этот список равномерно...

Равномерное распределение
Имеется склад с N контейнеров (N всегда чётное число). Для равномерной погрузки контейнеров на Q...

Равномерное распределение
Есть задачка и пример решения: Цена деления шкалы измерительного прибора равна 0,001 м. Показания...

Равномерное распределение
Имеется определенное количество 0 (например 8) и определенное количество 1 (например 4). Как их...

Равномерное распределение
Дано N контейнеров весом a1,a2,a3..an. Нужно распределить эти контейнеры между Q транспортными...

Равномерное распределение показов
Доброго времени суток. Хочу посоветоваться, как правильно реализовать равномерное распределение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru