2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Оптимальные убийства
Сообщение07.06.2020, 08:49 
Аватара пользователя


13/08/13

4323
Пусть вам надо выкосить толпу мобов в одной игре. Каждый моб характеризуется двумя параметрами - количеством жизней и уроном (число жизней, отнимаемых в секунду). Всего $N$ мобов, каждый со своими характеристиками жизни и здоровья. Вопрос - как нужно распределять урон по мобам, чтобы получить минимальное количество урона от них? (вы наносите определенное количество урона в секунду, которое вы можете распределять как хотите)

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение07.06.2020, 11:09 


05/09/16
12181
Из вашего рассказа следует, что результат от выбора не зависит. Т.е. если вы намерены убить персонажа $x$, который наносит вам при его убийстве урон $y$, то без разницы будете ли вы это делать в начале битвы или конце, причитающийся вам $y$ вы все равно получите.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение07.06.2020, 11:14 


21/05/16
4292
Аделаида
Насколько я понял, он наносит урон не при убийстве, а при своей жизни.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение07.06.2020, 11:31 
Аватара пользователя


13/08/13

4323
wrest в сообщении #1467419 писал(а):
Т.е. если вы намерены убить персонажа $x$, который наносит вам при его убийстве урон $y$, то без разницы будете ли вы это делать в начале битвы или конце, причитающийся вам $y$ вы все равно получите.

Нет, он наносит урон, пока жив
kotenok gav в сообщении #1467420 писал(а):
Насколько я понял, он наносит урон не при убийстве, а при своей жизни.

+

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение07.06.2020, 11:39 
Аватара пользователя


11/12/16
14157
уездный город Н
Sicker

Пусть $h_i$ - здоровье i-го моба, $s_i$ - сила i-го моба (скорость с которой он наносит урон персонажу).
Тогда мобов надо бить в порядке убывания отношения $\frac{s_i}{h_i}$
ИМХО, доказывается несложно, думаю Вы и сами справитесь.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение07.06.2020, 11:43 
Аватара пользователя


13/08/13

4323
EUgeneUS
:appl:

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение08.06.2020, 04:56 


10/03/16
4444
Aeroport
EUgeneUS
А можете подробно расписать решение, пожалуйста?

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение08.06.2020, 08:50 
Аватара пользователя


11/12/16
14157
уездный город Н
ozheredov
От чего же не расписать. Но не ожидайте математической строгости доказательств :wink:

1. Первым шагом поймем, что нельзя бить более одного моба одновременно. И действительно, пусть бьем двух мобов, каким-то образом распределяя свою силу на них. Один моб умирает в $t_1$, другой в $t_2 > t_1$.
а) понятно, что оба моба будут мертвы ровно в момент $t_2$, как бы мы не распределяли свою силу между ними. А значит, моб, который умрет вторым нанесет урон $s_2 t_2$, и этот урон не зависит от того, как мы распределим свои силу между этими двумя.
б) тогда, если сначала будем бить первого моба полной силой, мы уменьшим $t_1$, а значит уменьшим общий урон от этих двух мобов.
в) Итак, в каждый момент времени бьем ровно одного моба своей полной силой.

2. Нарисуем график урона персонажу в единицу времени. Этот график
а) Начинается в точке $ A (t=0, S = \sum\limits_{i=1}^{N} s_i)$
б) Заканчивается в точке $B (t = \frac{1}{s_0} \sum\limits_{i=1}^{N}h_i, S=0)$, где $s_0$ - сила персонажа, остальные обозначения, как в моем предыдущем посте.
Отметим, что эти точки не меняются от выбора порядка убийства мобов.
в) площадь под графиком - суммарный урон персонажу, который минимизируем.
г) график представляет собой ступенчатую убывающую функцию.

3. Соединим ломаной последовательно точку $A$, нижние точки ступенек, точку $B$. Тогда площадь под графиком разобьется на следующие части:
а) Треугольники над ломанной. Сумма площадей треугольников над ломаной не зависит от последовательности в которой располагаются отрезки.
б) График под ломанной. Его нужно минимизировать, путем перестановок отрезков ломанной (с сохранением длины и угла наклона каждого отрезка).

4. Из геометрических соображений понятно, что минимальная площадь под ломаной достигается в том случае, когда она выпукла вниз. А значит углы наклона отрезков должны уменьшаться (вообще-то углы отрицательные, то есть должен уменьшаться модуль угла).

5. А отношение $\frac{s_i}{h_i}$ есть ничто иное, как (минус) тангенс угла наклона i-го отрезка ломаной. Ч.Т.Д.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение08.06.2020, 22:50 
Аватара пользователя


26/05/12
1702
приходит весна?
А теперь ещё добавьте к этому возможность восстановить здоровье при смерти моба на процент от его здоровья. Или возможность получить уровень при убийстве каких-либо мобов, который увеличит урон и здоровье управляемого персонажа. Можно ещё вспомнить про тайминги респауна мобов. И про дебаффы на скорость атаки, которые они накладывают. И жизнь сразу станет сложной и непредсказуемой.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 01:32 
Заслуженный участник
Аватара пользователя


15/10/08
12649
И.м.х.о., достаточно добавить один только разброс урона, чтобы всё окончательно запутать.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 13:02 
Аватара пользователя


13/08/13

4323
Утундрий в сообщении #1467713 писал(а):
И.м.х.о., достаточно добавить один только разброс урона, чтобы всё окончательно запутать.

Да тут вроде все просто - чтобы минимизировать матожидание урона, надо взять среднее значения урона и проделать стратегию выше

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 14:42 
Аватара пользователя


11/12/16
14157
уездный город Н
Sicker
Чтобы "порушить стратегию" достаточно ввести "оглушение моба" - моб, получивший за n-секунд не менее k-урона, в течение l-секунд не может атаковать. И стратегия рассыпается на первом пункте, ибо становится выгодно бить несколько мобов одновременно.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 14:44 


21/05/16
4292
Аделаида
Предлагаю другую фичу: чем меньше здоровье моба (ну, т.е., чем больше он получил урона), тем сильнее/слабее он атакует.

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 16:59 


10/03/16
4444
Aeroport
EUgeneUS
Интересные соображения, thanks.
Вот что еще интересно. Это целевая функция, определенная на перестановках. Есть какие-то общие методы нахождения минимума таких функций?
В тред приглашаются:
Someone
pogulyat_vyshel (как из бани вернется)
Otta

P.S. Sicker, респектос за задачу. Вы ее сами придумали? (респектос разумеется не зависимо от того, сами или нет)

 Профиль  
                  
 
 Re: Оптимальные убийства
Сообщение09.06.2020, 17:06 
Заслуженный участник
Аватара пользователя


16/07/14
9264
Цюрих
Тут нужно действовать осторожно. Уже для такой простой функции как "число запрещенных пар" (есть некоторый список пар чисел, и мы хотим чтобы числа из пары не стояли рядом) NP-трудна.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: YandexBot [bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group