Математика стилей

Модератор: Модераторы форума

Сообщение 0d1n 01 ноя 2010, 11:31
Создаю тестовую темку в оффтопике для попытки обсудить и собрать любые алгебраические идеи для аналитического исследования задачи по определению любимых стилей футболистов.

 Линейная алгебра стилей
Линейная алгебра стилей

Подобное желание возникло лишь после того, как наткнулся на этот пост менеджера Shustrik. Благодаря его идее каждый матч во ВСОЛе можно рассматривать как уравнение с 10+16=26 неизвестными. В качестве неизвестных используются некие объекты двух типов, символизирующие взаимодействие стилей игроков со стилем игры в матче (16 неизвестных, которые пока будем называть объектами или переменными 1-ого типа) и символизирующие взаимодействие стилей двух игроков (10 неизвестных, которые пока называем объектами или переменными 2-ого типа).

Для каждого игрока существует 6 переменных 1-ого типа, и если для какого-то игрока одна из переменных 1-ого типа равна 2, то автоматически остальные переменные 1-ого типа для этого игрока приравниваются 0.
Применительно к моей команде, в которой за 2 сезона в матчах приняли участие около 40 игроков, легко видеть, что переменных 1-ого типа возможно максимум 6*40=240 штук.

С переменными 2-ого типа дело обстоит по-другому.
Если в команде N игроков, то количество переменных равно числу сочетаний из N по 2:
 Скрытый текст

Для моей команды максимальное число переменных 2-ого типа составит 40 * 39 / 2 = 780 штук.
К счастью, в сыгранных матчах их будет гораздо меньше, чем 780, т.к. очень часто одни и те же игроки играют примерно на одинаковых позициях и образуют порядка 10 пар за всю историю выступления в команде, а не порядка 50.

Применительно к моему клубу за сезон команда играет от 50 до 100 матчей.
Давайте возьмём самый малоинформативный случай - всего 50 матчей в сезон.
Тогда за 2 сезона, в которых сыграно около 100 матчей, имеем систему из примерно 100 линейных уравнений с максимальным количеством неизвестных в размере 240 + 780 = 1020.
В сыгранных матчах, конечно же, будут встречаться не все переменные.
Т.е. на практике переменных будет не тысяча, а несколько сотен.

Кроме уравнений, символизирующих сами матчи, в систему необходимо добавить "уравнения единственности любимого стиля", символизирующие, что для каждого игрока из шести переменных 1-ого типа только одна равна 2, остальные 5 равны 0 - других значений не бывает.
Какой именно вид должны иметь "уравнения единственности любимого стиля", точно не знаю - может кто-нибудь предложит подходящий способ?

Таким образом мы увеличим число уравнений системы.
Но может быть кто-то заметит, что к этой системе можно подключить ещё какие-нибудь уравнения?

Теперь нужно решить, как лучше поступить с итоговой системой.
1) Один из вариантов - приведение системы к трапецевидной форме.
В результате такого приведения мы выразим часть переменных системы через оставшиеся переменные, которые будут свободными.
Систему можно приводить к трапецевидной форме двумя способами, когда в качестве свободных переменных мы будем стараться оставлять переменные 1-ого типа и когда будем стараться делать свободными переменные 2-ого типа.
А затем уже ищем все свободные переменные прямым перебором на компе.
На деле свободных переменных может оказаться слишком много, чтобы комп успел перебрать и проверить все возможные их комбинации за несколько часов, поэтому нужно искать другой вариант, как работать с системой.
2) Может быть кто-то предложит что-нибудь действующее и идейное в качестве второго варианта?
Пока же в свою очередь могу предложить выделять из большой системы маленькие.
а) Сначала все возможные комбинации по 2 уравнения.
2 похожих матча будут описываться примерно одинаковыми неизвестными, и может так случиться, что из пары уравнений можно будет выразить связь малого количества переменных.
Количество всевозможных таких систем двух уравнений из имеющейся сотни уравнений равно числу сочетаний из 100 по 2: 100 * 99 / 2 = 4950.
Комп разберется с 5000 систем за доли секунды.
б) Далее комбинации по 3 уравнения, количество которых равно: 100 * 99 * 98 / 3! = 161700 систем.
Комп снова справится за секунду.
в) Комбинации по 4 уравнения: 100 * 99 * 98 * 97 / 4! = (примерно) 4 млн систем.
Комп "жужжит" порядка секунды.
г) Комбинации по 5 уравнений: 100* 99 * 98 * 97 * 96 / 5! = (примерно) 75 млн систем.
Комп работает порядка минуты.
д) по 6 уравнений: около млрд систем - это уже полчаса-час
е) по 7 уравнений: 15 млрд систем - примерно пол-суток
ж) по 8: почти 200 млрд систем - это уже много - порядка недели
При анализе таких малых систем может возникнуть ситуация, когда удастся сразу выяснить стиль какого-нибудь определенного игрока.
А вся фишка в том, что знание стиля хотя бы одного игрока делает следующие добрые вещи:
а1) сразу определяются все переменные 1-ого типа для данного игрока;
а2) все переменные 2-ого типа, в которых "участвует" данный игрок, трансформируются в переменные 1-ого типа для оставшихся игроков,т.е. знание стиля одного игрока сразу уменьшает число неизвестных на (6 + N) штук, что замечательно сократит область перебора.

А теперь вопрос для тех, кто "асилил" текст до этих 4-ёх строчек - я в них сделал ошибку.
Какую - отвечу ниже, но если Вы нашли её сами до этого момента, значит Вы в теме.



Ошибка в утверждении а2) - переменные 2-ого типа не трансформируются в 1-ый тип, т.к. взаимодействие стилей игроков отличается от взаимодействия игрока с общим стилем команды в матче.
Но а1) - абсолютно верно. Несмотря на ошибочность а2), область перебора всё равно некоторым образом сократится - кто предложит, как это использовать?

 Нелинейная алгебра стилей
Нелинейная алгебра стилей

Ещё хотел бы предложить матричную модель стилей.
В этой модели используются следующие объекты:
- объект стиль - матрица размера 6 на 1, т.е. столбец, в котором один элемент равне 1, остальные 5 элементов равны 0;
- матрица коллизий размера 6 на 6, которая производит операцию взаимодействия стилей двух игроков;
- матрица стиля (матрица общего стиля команды в матче) - это единичная матрица размера 6 на 6.

Чтобы понять, как это "работает", просто посмотрите картинку:
 Скрытый текст
Полноразмерная картинка по адресу: https://img708.imageshack.us/img708/3966/111bgc.jpg


Уравнение из таких объектов описывает матч, а множество таких матчей порождает систему уравнений из таких объектов.
Система уравнений, в которых в качестве неизвестных выступают матрицы размера 6 на 1 (попросту говоря, столбцы), а в качестве постоянных коэффициентов - матрицы 6 на 6.
Неизвестные эти имеют такую особенность, как то, что они являются ортами в 6-мерном пространстве, т.е. это линейно-независимые единичные векторы в 6-мерном пространстве стилей.
Как решать подобную нелинейную систему и что можно сделать с ней полезного - пока не знаю.
А Вы?
Последний раз редактировалось 0d1n 06 фев 2011, 23:54, всего редактировалось 4 раз(а).
Комментарий модератора Dus: Перенёс тему в "Оффтопик".
С уважением.
0d1n
 
 
 

Re: Алгебра стилей
Сообщение Ice_Harley 01 ноя 2010, 12:44
Я, для решения подобной системы (я использую только переменные 1го типа), применяю генетический алгоритм. А чтобы уменьшить количество переменных я сначала провожу анализ матчей из которого получаю "дополнительные уравнения" вида:
- игрок А в коллизии с игроком B
- игрок С равен игроку D
и т.д.
Ну и конечно скармливаю алгоритму не все подряд матчи, а специально отобранные так, чтобы максимизировать кол-во матчей, минимизировав при этом кол-во использованных игроков.
Серебро и дважды бронза Д1 Польши. Четырежды золото, трижды серебро и тринадцать раз бронза Д2 Польши.
Дважды Кубок Вызова, трижды золото и трижды серебро Д3 Польши
Золото, дважды серебро и бронза Д2 Словакии. Золото и бронза Д3 Словакии. Дважды золото и дважды бронза Д2 Франции.
Ice_Harley
Профи
 
Сообщений: 964
Благодарностей: 13
Зарегистрирован: 21 ноя 2006, 13:15
Откуда: Севастополь
Рейтинг: 484
 
 

Re: Алгебра стилей
Сообщение LordRone 01 ноя 2010, 13:13
У тебя тема не в оффтопике, как ты захотел, а в о лиге.

По-моему, есть много более простые методы, позволяющие изучать стили в ручную. Но если хочется зауми - вот пара адекватных слов на нашем нацФоруме
 от Killer 74
Общий принцип определения стилей заключается в решении уравнения вида:
х1+х2+...+х16=у
где у - результирующее взаимопонимние в игре
х1,х2,...,х16 - вклад каждого игрока в итоговое взаимопонимание
Основная цель - найти каждый х, тогда задача определения конкретного стиля игрока становится тривиальной.
Найти можно путем обычного решения уравнения. В общем случае число решений может быть довольно большим, но не бесконечным. Следовательно, окончательного решения по одному уравнению найти, как правило, невозможно.
Для того чтобы найти единственно верное решение следует использовать систему уравнений, которая позволяет понизить порядок всей системы. Например, заменив одного запасного игрока можем упростить систему уравнений получаем:
х16.1-х16.2=у1-у2
где х16.1 и х16.2 - два разных игрока в одинаковых в остальном составах
у1 и у2 - два значения взаимопонимания в исследуемых играх
Возможны следующие варианты:
1) у1+2=у2
2) у1=у2
3) у1=у2+2
В первом случае делаем вывод, что х16.1=0, а х16.2=2. Т.е. второй игрок совпадает со стилем, которым играла команда, а первый нет.
Во втором - (х16.1=0 и х16.2=0) или (х16.1=2 и х16.2=2). Т.е. либо оба игрока не совпадают со стилем команды, либо оба совпадат
В третьем - ситуация обратная первому случаю.
Немножко быстрее определяются стили, если менять игроков основы, но при этом уравнения сразу не могут быть упрощены до уравнения с одним неизвестным и необходимо ступенчатое преобразование. При некоторой аккуратности в записях все оказывается очень просто.
Я для каждого неизвестного игрока определяю множество возможных стилей и исключаю те стили, которых у игрока быть не может, пока не останется единственный. Кроме того, для записи зависимостей стиля одного игрока от другого можно использовать предикаты.
LordRone
 
 
 

Re: Алгебра стилей
Сообщение Shustrik 02 ноя 2010, 00:15
Думаю, что метод решения системы работать не будет, т.к. даже если ранг твоей матрицы будет 100, а переменных, например, 150, то эти 50 переменных придется перебирать очень долго.
А моя программа работает на основе 2а). Если удастся установить стили штук 5 игроков, то остальных определить ей уже труда обычно не составляет. Только для этого метода требуется достаточно большое количество уравнений.
Кстати, хранить каждое уравнение лучше как массив номеров переменных (всего 26 штук в каждом), т.к. коэффициенты при каждой переменной =1, и нас интересует только какие переменные входят в наше уравнение. Это значительно сэкономит память (что в общем-то не очень критично) и время.
Shustrik
Профи
 
Сообщений: 874
Зарегистрирован: 20 июн 2007, 22:08
Рейтинг: 500
 
(без команды)
 

Re: Алгебра стилей
Сообщение DFB 02 ноя 2010, 12:29
во народу делать то нечего :grin:
DFB
 
 
 

Re: Алгебра стилей
Сообщение 0d1n 03 ноя 2010, 05:20
 связь трапецевидной формы системы и прямого перебора свободных переменных с помощью компа
Спасибо всем, кто откликнулся и поделился хоть капелькой своего опыта.

Интересно получилось, что собрав нюансы, предложенные первыми тремя менеджерами, которые приняли участие в обсуждении, появились наброски некого комбинированного метода в самой общей форме, конкретной пользы от которого пока, к сожалении, не видно, и всё-таки ...

а) Простота метода в том, что сначала мы работаем со старой доброй линейной системой уравнений и приводим её к трапецевидной форме, конечный вид которой будет отличаться одним особенным удобством благодаря специальной нумерации игроков.

1) Составляем общую систему из M уравнений (всего сыграно M матчей, в которых играли N футболистов), в которых переменные первого рода обозначим X-ами, а переменные второго рода - Y-ами.
Каждая переменная будет иметь 2 индекса.
X(i,j): i принимает значения от 1 до 6 и обозначает общий стиль команды в матче (1 - норма, 2 - британь, 3 - катеначчо, ... , 6 - комба), j - от 1 до N - это порядковый номер футболиста.
Y(i,j): i и j принимают значения от 1 до N - порядковые номера футболистов.

Например:
- если в уравнении встречается переменная X(4,15), то она означает прибавку к Вз от футболиста номер 15 при игре команды стилем бей-беги;
- если встречается Y(7,23), то эта переменная символизирует прибавку к Вз от взаимодействия футболистов под номерами 7 и 23.

Нумеровать футболистов будем следующим образом:
- для каждого футболиста подсчитывается количество различных соседей по составу во всех матчах, в которых он играл в основе;
- футболист, у которого соседями на поле было наименьшее количество разных игроков (либо который вообще не играл в оффициальных матчах), получает порядковый номер 1;
- следующий игрок по этому показателю получает номер 2, и т.д.
В итоге последний порядковый номер будет иметь самый популярный игрок команды, который "переспал на поле" чуть ли не со всеми игроками клуба.

Для чего нужна такая нумерация - поймёте ниже.

2) Приводим систему к трапецевидной форме таким образом, чтобы первая группа уравнений содержала переменные Y(1,i), следующая Y(2,i) и так далее, пока "не упрёмся" в свободные переменные.
В итоге в последнем M-ом уравнении останутся X-перемененные всех игроков, а Y-переменные, начиная с некоторого по популярности футболиста.
Вот простой пример, чтобы легче понять, что надо делать:
 Скрытый текст


3) А теперь теоретически воспользуемся выч.мощностью компа и будем тупо перебирать и подставлять в систему n самых "популярных" игроков.
n надо брать около 10, например 11 или 12 (для перебора 14-игроков уже требуется порядка суток - т.е. если мы разозлимся, то можем перебирать и 14).

4) Пусть в данный конкретный момент комп подставил какой-то вариант для наших n игроков.
Взглянем в этот момент на систему.
Оказывается, что число неизвестных в системе существенно сократилось.
Все Y(i,j), в которых i и j соответствуют номерам перебираемых компом футболистов, становятся константами.
Максимальное число таких обращающихся в константу Y-переменных равно числу сочетаний из n по 2: это есть n * (n-1) /2.
Если мы перебираем 12 игроков, то при каждой подстановке сокращается 12 * 11 / 2 = 66 переменных.
Когда мы злые, то 14 игроков сокращают 14 * 13 / 2 = 91 переменную.

Но это только Y-переменные.

5) Скорее всего наши n популярных игроков, перебираемых компом, успели поиграть в матчах всех стилей, поэтому каждому игроку будет соответствовать 6 иксов, а всего сократится 6n иксов.
При n = 12 сократится 72 икса.
При n = 14 сократится 84 икса.

6) Суммируя, мы имеем сокращение следующего количества переменных:
При n = 12 сократится 66 + 72 = 138 переменных.
При n = 14 сократится 91 + 84 = 175 переменных.

Для лучшего понимая сути вернемся к нашему простому примеру.
В том примере было 5 свободных переменных: Y(3,4), Y(4,5), Y(4,6), Y(5,6) и Y(6,7).
Так как пример у нас простой, то и компьютер в примере мы будем использовать "простой" (слабый).
С помощью компьютера будем перебирать всего трёх игроков под номерами 5, 6 и 7.
Это означает, что переменные Y(5,6) и Y(6,7) обратятся в константы.
Если бы в нашей системе была переменная Y(5,7), то она тоже обращалась бы в константу.
Последний результат с прошлой картинки я переписал в начало следующей картинки в виде трапеции, чтобы трапецевидность нашей простой системы можно было бы "не только слышать, но и видеть".
Вторая система на новой картинке - это результат сокращения свободных переменных Y(5,6) и Y(6,7) с помощью нашего "слабого" компа.

 обсуждение дальнейшего сокращения свободных переменных
Куда двигаться дальше - пока неясно.

Если в этот момент, когда сократится такое существенное число переменных, система станет определенной, т.е. пропадут все свободные переменные и система будет иметь единственное решение, то мы это решение тут же и найдем.
Но вся беда в том, что если мы тупо собрали систему из всех сыгранных матчей, то скорее всего переменных в ней будет так много, что после сокращения обязательно останется ещё некоторое количество свободных переменных, и, увы, мы не можем остановиться и решать полученную систему, т.к. комп должен дальше быстренько продолжать перебор.

Как выйти из этого положения?

Смутно кажется, что нужно систему составлять не из всех матчей, а из какой-то определенной части, в которой переменных будет не слишком много, и при подстановке комп сократит все свободные переменные.
Если это так, то нужен четкий алгоритм построения такой системы, над которым ещё предстоит подумать более определенно.

б) Пробовал в этот момент перейти к матричной модели стилей.
Переменных становилось ещё меньше, но их тип становился сложнее - вместо скаляров в качестве переменных становились матрицы размера 6 на 1 (столбцы).
Радует тот факт, что при переходе к матричной модели именно в подобный момент после сокращения существенной части переменных методом а), система (не знаю, как точно называется) становилась "более линейной" что ли относительно неизвестных столбцов, чем до применения метода а).
Т.е. если не использовать метод а), то в матричной модели мы имеем систему уравнений, в которых левые части являлись суммой произведений двух столбцов (говоря точнее, один столбец транспонирован, а между ними ещё матрица коллизий).
А после использования метода а) при переходе к матричной модели, как правило, появляется некоторое количество свободных столбцов, но, к сожалению, как правило, будут присутствовать и старые нехорошие произведения двух столбцов.
Такое сокращение переменных и "уменьшение нелинейности" системы побуждает привести коэффициенты при одинаковых свободных переменных, но к сожалению эти коэффициенты не скаляры и не квадратные матрицы, а матрицы вида 1 на 6, т.е. строки, а неквадратные матрицы не имеют обратных себе матриц, поэтому я не понимаю, как можно привести такие коэффициенты, и вообще пока считаю их неприводимыми.

Чтобы легче было понять, что я имел ввиду в пункте б), продолжим разбирать наш простой пример.
На следующей картинке записана наша простая система после использования метода а) при переходе к матричной модели.
Кружочками обведены неизвестные переменные.
z(i) - это уже не скаляры, а матрицы размера 6 на 1, столбцы, в которых 5 нулей и 1 единица на месте стиля игрока (1 - норма, 2 - британь, 3 - катеначчо, ... , 6 - комба).
Ниже показан пример того, как можно было бы привести коэффициенты при переменной z(2), если бы коэффициенты являлись скалярами.
Для этого рассматриваются уравнения, подобные уравнениям 3 и 4 нашей простой системы, но коэффициенты при z(2) (d1 и d2) скалярные.
В скалярной системе двух уравнений легко видеть, что достаточно умножить первое уравнение на d2/d1, и коэффициенты при z(2) становятся одинаковыми, после чего можно уменьшить число неизвестных.
Но в реальности при z(2) коэффициенты не скаляры, а матрицы размера 1 на 6, т.е. строки из 6-ти элементов.
Неквадратные матрицы не имеют обратного себе элемента (у скаляров это аналог const и 1/const), поэтому как привести коэффициенты при z(2) я сообразить не могу.
 Скрытый текст


Над чем-нибудь другим пока не думал.
Может кто-нибудь зацепит другой вариант "развития событий".
Последний раз редактировалось 0d1n 06 ноя 2010, 05:21, всего редактировалось 4 раз(а).
0d1n
 
 
 

Re: Алгебра стилей
Сообщение 0d1n 05 ноя 2010, 03:21
 дальнейшее сокращение переменных при переходе к матричной модели
Прошлый раз мы остановились на переходе к матричной модели нашей системы.
Для простоты мы напрямую работали с простейшим аналогом в качестве примера.

Наметился метод приведения коэффициентов при тех матричных z-переменных, которые встречаются в нескольких уравнениях системы.
Например, в нашей простейшей системе переменная z(2) встречается в трёх уравнениях: в 1-м, 3-м и 4-м.
z-переменные в системе на последней картинке - это матрицы размера 6 на 1, т.е. столбцы из 6-ти переменных скалярных элементов, значения которых либо 0, либо 1.

Когда мы имеем дело с системой скалярных переменных, то можно исключить скалярную переменную из всех уравнений системы кроме одного.

Подобным образом при работе с системой матричных переменных, содержащих по 6 переменных скалярных элементов, мы можем исключить матричную переменную из всех уравнений системы кроме шести.
Т.е. при приведении матричных операций к обычным операциям сложения и умножения каждая матричная переменная будет трансформироваться в 6 скалярных переменных, являющихся её элементами.

Здесь нас ожидает ещё одна радость - во ВСОЛе существует условие единственности любимого стиля футболиста.
Это условие особым образом связывает элементы z-переменной между собой: какой-то один элемент равен единице, остальные обязательно равны нулю.
Из этого условия я увидел только одно полезное уравнение (уравнение единственности любимого стиля): z(1,i) + z(2,i) + z(3,i) + z(4,i) + z(5,i) + z(6,i) = 1.
Т.к. каждое z(j,i) может быть только либо 0, либо 1, то это уравнение неплохо описывает условие единственности любимого стиля футболиста.
В этом условии может содержаться ещё какой-то полезный математический смысл, но ещё чего-то полезного, кроме последнего уравнения, мне заметить не удалось.
Т.о. для каждого игрока нашей команды независимо от сыгранных матчей мы уже имеем одно уравнение, содержащее скалярные элементы соответствующей ему z-переменной, а значит в системе достаточно иметь 5 уравнений с z-переменной, и тогда эту переменную мы можем исключить из всех остальных уравнений системы.

Далее видны осложнения с исключением, возникающие из-за невозможности делить на 0, однако также видны и способы обхода этого ограничения.
Посмотрим на это в следующий раз, а пока можно прикинуть, что сотня сыгранных матчей (как в моей команде), порождающая систему из сотни уравнений, благодаря этому способу выражает друг через друга примерно 100/5 = 20 игроков (все вычисления очень приблизительные и показывают нам средние "эталонные" значения).
За всю историю моей команды на поле выходили около 40 игроков.
10-14 игроков подставляются прямым перебором компа, 20 игроков выражаются через остальных благодаря последнему методу (если в него не закралась ошибка) - итого примерно 30-35 игроков.
Остаётся ещё совсем чуть-чуть.

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

 вопрос для интересующихся данной темой
Для тех, кто заглядывает в эту тему.
Лично у меня возникло желание знать, а, собственно, сколько различных переменных 1-ого рода (иксов) и сколько различных переменных 2-ого рода (игреков) встречается в системе уравнений, которая порождается всеми сыгранными матчами моей команды за 2 сезона.

Стоит ли мне написать небольшую утилитку, которая на основе информации, собранной парсером Власика, будет рассчитывать число переменных обоих родов?

Заодно эта утилитка бы подсчитывала, сколько каких переменных соответствуют каждому игроку.

Я вот тут что-то пишу, считаю, а вдруг за все матчи моей команды переменных окажется не так уж и много?

Если кто иногда заглядывает в эту тему и ему не безразличен данный вопрос, то отпишитесь, будет ли нужна подобная утилитка кому-нибудь?

Пока в свободном обращении я такой утилитки не видел.

 литература по теме
Монография
Ортега Дж., Рейнболдт В. Итерационные методы решения нелинейных систем уравнений со многими неизвестными. М.: Мир, 1975

Нашёл вот на этом сайте http://eqworld.ipmnet.ru/ru/library/mathematics.htm
вот в таком разделе http://eqworld.ipmnet.ru/ru/library/mat ... merics.htm
вот такую книгу http://eqworld.ipmnet.ru/ru/library/boo ... 975ru.djvu

Кажется, это по нашей теме, вот только уровень математики там, мягко говоря, "выше привычного".
Последний раз редактировалось 0d1n 06 ноя 2010, 05:21, всего редактировалось 2 раз(а).
0d1n
 
 
 

Re: Алгебра стилей
Сообщение Shustrik 05 ноя 2010, 22:28
Книжка не та. У тебя будет линейная система уравнений. Это куда проще. Можешь с того же сайта взять книжку Крылов, Бобков, Монастырный, только не помню, какой том нужен. И теория тут в общем-то ни к чему, просто почитать алгоритм метода.

Добавлено спустя 1 минуту 41 секунду:
И быстрей всего, наверное, будет метод Гаусса. Правда он может ухудшить обусловленность матрицы, но в данном случае это не критично.
Shustrik
Профи
 
Сообщений: 874
Зарегистрирован: 20 июн 2007, 22:08
Рейтинг: 500
 
(без команды)
 

Re: Алгебра стилей
Сообщение Саньок 05 ноя 2010, 22:52
Во дают :grin:
Саньок
 
 
 

Re: Алгебра стилей
Сообщение 0d1n 06 ноя 2010, 03:41
 обсуждение литературы и рода задачи
Shustrik писал(а):Книжка не та. У тебя будет линейная система уравнений. Это куда проще. Можешь с того же сайта взять книжку Крылов, Бобков, Монастырный, только не помню, какой том нужен. И теория тут в общем-то ни к чему, просто почитать алгоритм метода.
Ну почему не та, если на самом низком уровне система уравнений, описывающая любимые стили футболистов, именно нелинейная.
Другое дело, что сначала с этими нелинейными слагаемыми можно на более высоком уровне поработать как с линейными - это пока всё, что мы умеем во ВСОЛе.
Также, например, в одном разделе книги рассказывается о выпуклых функционалах, дающих в системе уравнений слагаемые вида x(транс) * A * x.
В нашей системе слагаемые имеют более сложный вид x1(транс) * A * x2 (т.е. слева и справа от матрицы А разные вектора, а не одинаковые), но даже на основании этого момента можно сделать вывод, что в этой книге работают с похожими объектами, которые мы получили в матричной системе уравнений стилей.

По поводу книги Крылова, Бобкова и Монастырного - на том сайте только 2-ой том, а линейные уравнения они рассматривают в 1-ом томе.
Электронку 1-ого тома после непродолжительных поисков не нашел.
Но на том же сайте есть вот эта книга: http://eqworld.ipmnet.ru/ru/library/boo ... 959ru.djvu
Глава 6. Решение систем линейных алгебраических уравнений.
Вместо Крылова, Бобкова и Монастырного можно пользовать и этой книгой.

Shustrik писал(а):И быстрей всего, наверное, будет метод Гаусса. Правда он может ухудшить обусловленность матрицы, но в данном случае это не критично.
Метод Гаусса - это метод приведения системы к трапецевидной форме (треугольной в случае равенства количества линейно независимых уравнений и переменных) по ведущему (наибольшему) коэффициенту?
Просто я о конкретных методах приведения системы к трапецевидной форме ещё не думал, т.к. это выглядит довольно ясной и понятной задачей, в результате чего мы получим ещё кучу свободных переменных.
А вот "фишки" об уменьшении этих свободных переменных - это пока самое интересное в линейном методе.
Последний раз об одной возможности я упоминал - если в определенный момент перейти к матричной форме записи.

 преобработка основной исходной системы
Я так ни разу и не обсуждал идею менеджеров Ice_Harley и Shustrik об уменьшении количества переменных ещё до приведения системы к трапецевидной форме.
Речь идёт о поиске игроков одинакового стиля или игроков коллизионного стиля. Может ещё чего-нибудь.

Конкретно и детально эти методы они не описывали, но бросается в глаза простейший способ: из всей совокупности матчей брать по 2 матча, составлять систему линейных уравнений, и из одного уравнения вычитать другое.
Если пара матчей очень похожа, то разность уравнений даст новое уравнение, имеющее всего несколько переменных.

Пример.
Рассмотрим эти 2 мои товарищеских матча - http://www.virtualsoccer.ru/viewmatch.p ... _id=338316 и http://www.virtualsoccer.ru/viewmatch.p ... _id=343617
Они отличаются друг от друга всего на 4 переменных: y(10, 11), y(10,17), x(3,11) и x(3,17), где 10 - это Мохд Редзун, 11 - Себастиан Пихл, 17 - Бира Сельми, цифра "3" в переменных x означает общий стиль команды в матче "катеначчо".
Сколько различных вариантов надо перебрать, чтобы проверить все возможные значения для этих переменных?
Игреки имеют 3 возможных значения (либо -4, либо 0, либо 12), иксы всего 2 (либо 0, либо 2).
Всего лишь 3 * 3 * 2 * 2 = 36 вариантов.
Допустим, что из этих 36 вариантов подошли 10.
Среди 10 подходящих вариантов может оказаться так, что в какой-то переменной никогда не встречалось определенное значение - а это уже есть "железная" информация.
Разность уравнений двух матчей даёт следующее уравнение: y(10,11) - y(10,17) + x(3,11) - x(3,17) = 0.
Без всякого компа на бумажке или в голове можно определить все подходящий варианты:
-4, -4, 0, 0
-4, -4, 2, 2
0, 0, 0, 0
0, 0, 2, 2
12, 12, 0, 0
12, 12, 2, 2
Что мы видим?
Во всех переменных встречаются разные значения - "железной" информации о значении переменной вытянуть не удалось.
Однако, уравнения дают ещё один род информации: y(10,11) = y(10,17), x(3,11) = x(3,17).
Пожалуйста, сократили 2 переменные в общей системе, что уменьшило общую область перебора в 3 * 2 = 6 раз.
Вот пара способов сокращения переменных перед тем, как приводить систему к трапецевидной форме по схеме Гаусса, например.

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

Пусть команда сыграла N различных матчей.
Число сочетаний по 2 матча равно всего N * (N-1) / 2!(примерно пропорционально N*N = N^2, т.е. "N в квадрате").
По 3 матча: N * (N-1) * (N-2) / 3! (примерно N*N*N = N^3, т.е. "N в кубе").
По 4: N * (N-1) * (N-2) * (N-3) / 4! (примерно N^4).
По 5: N * (N-1) * (N-2) * (N-3) * (N-4) / 5! (примерно N^5, но не будем забывать, что 5! = 120, т.е. порядка 100, поэтому точнее будет оценка (N^5) / 100 ).
По 6: примерно (N^6) / 6!, а 6! = 720 - это уже порядка 1000, т.е. оцениваем (N^6) / 1000.

Прикинем для реальной ситуации с молодым клубом (за всю истории сыграно около 100 = 10^2 матчей) и опытным клубом (сыграно около 1000 = 10^3 матчей).
Число сочетаний по 2 матча: примерно (10^2)^2 = 10^4 различных пар уравнений для молодого и (10^3)^2 = 10^6 различных пар уравнений для клуба.
По 3 матча: 10^6 троек уравнений для молодого клуба и 10^9 уравнений для опытного клуба.
Дальше ещё можно написать число сочетаний по 4 матча: 10^8 четверок для молодого, а вот 10^12 четверок для опытного это для компа уже перебор.
Для 100 матчей можно продолжить дальнейшее углубление:
группировка по 5 матчей даст около 10^10 / 100 = 10^8 различных систем;
по 6 матчей - около 10^12 / 1000 = 10^9 систем;
по 7 матчей - около 10^14 / 7! ~ 10^14 / 5000 = 2 * 10^10.

В итоге видно, что даже сотня уравнений позволяет рассмотреть всевозможные группировки по несколько матчей числом примерно до 5.

Если же уравнений для анализа мы берем всего порядка десятка, то можно вообще провести их полный анализ.
Легко видеть, что наибольшее количество разнообразных группировок возникает при сочетании по N/2 матчей из N матчей.
Если мы рассматриваем всего 10 матчей, то число таких сочетаний по 5 матчей из 10 будет равно: 10 * 9 * 8 * 7 * 6 / 5! = 252 - всего 252 различных систем уравнений в самом разнообразном моменте перебора.
Если рассматриваем по 20 матчей, то число сочетаний по 10 матчей из 20 равно 184756 различных систем уравнений.
Число сочетаний по 15 матчей из 30-ти: примерно 1.5 * 10^8 - т.е. это и есть где-то наш порог всего лишь для комбинирования систем.
А эти системы ещё надо "прорешать".
Допустим, мы получили какую-то систему.
Если там больше двух уравнений, то нужно ещё подумать, как их решать.
С первого взгляда кажется, что надо привести систему к трапецевидной форме, а затем посчитать, сколько свободных переменных осталось (именно так мы и поступили с системой из двух уравнений, приведенной выше).
Для этих свободных переменных нужно вычислить область перебора всевозможных вариантов (одна икс-переменная дает 2 разных варианта, одна игрек-переменная дает 3 разных варианта).
В итоге если область перебора окажется слишком большой, то мы ничего перебирать не будем, а просто перейдем к следующей группировке уравнений в систему.

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

 построение основной исходной системы
Возникает новый момент - а что если не рассматривать все эти N матчей, сыгранные за всю историю существования команды?
Именно об этом в который раз говорили и Ice_Harley, и Shustrik - они выбирали для анализа только самые интересные матчи.
Самые интересные матчи будут те, в которых играли самые интересные игроки.
А самые интересные игроки - это:
1) игроки, которые на поле играли в паре с наибольшим количеством других различных игроков;
2) игроки, которые провели наибольшее количество матчей (лучше, если на поле, но неплохо, если и на замене)
Т.о. образом можно для каждого игрока найти эти 2 числа, а затем выбрать, например, 20(не знаю, сколько лучше) самых лучших по этому показателю игроков и найти все матчи, в которых играли только они, т.е. оставшиеся игроки в этих матчах не встречались.
Вот такой, например, вариантик для выбора основной системы, с которой мы будем работать.

Есть желающие что-нибудь сказать?
Ведь, получается, что на основании всего вышесказанного можно уже попробовать составить более-менее универсальный алгоритм, использующий выч. мощности компа и не требующий предварительного знания стилей каких-либо игроков команды (хотя если какие-нибудь стили известны, то это, наверняка, очень сильно упростит и ускорит работу алгоритма).
0d1n
 
 
 

Re: Алгебра стилей
Сообщение Нови4-0к 06 ноя 2010, 05:44
Ты упорный) Но, изначально,ищешь сложные решения.
С интересом слежу за этой темой(правда, отвык от высшей математики ).Не отписывался до сих пор, потому,что не могу понять: зачем тебе это надо?
Стили в команде ты уже определил.
-Если у тебя мозг требует абстрактных задач, то подсказывать тебе ход решения - только кайф ломать.
-А если ты, как я понимаю , с программированием в ладах и хочешь создать утилиту ,исключающую мозгоручной труд по определению стилей , для общего пользования - это неизбежно приведет к изменению правил:не для того параметр скрывали, чтобы каждый, нажав кнопку, мог его раскрыть.
- Если только для себя: для работы по трансферам и со сборной?? Довольно разумно, но быть донором идей нет желания.
Кстати,есть вариант обмена игроков.Сейчас не готов - вечером отпишусь в личку.
Нови4-0к
 
 
 

Re: Алгебра стилей
Сообщение Shustrik 07 ноя 2010, 02:10
x(транс)*A*x - это получится уравнение сумма (xi*xj*Aij) - уравнение второй степени. Откуда это?
у нас же есть система, каждое уравнение в которой имеет вид: x1+x2+...+x26 = С. Т.е. линейная. Я вообще не понимаю, как перейти от нее к нелинейной и зачем это нужно. Методы решения линейных уравнений куда проще.
Shustrik
Профи
 
Сообщений: 874
Зарегистрирован: 20 июн 2007, 22:08
Рейтинг: 500
 
(без команды)
 

Re: Алгебра стилей
Сообщение 0d1n 07 ноя 2010, 04:21
Нови4-0к писал(а):Ты упорный) Но, изначально,ищешь сложные решения.
С интересом слежу за этой темой(правда, отвык от высшей математики ).Не отписывался до сих пор, потому,что не могу понять: зачем тебе это надо?
Стили в команде ты уже определил.
-Если у тебя мозг требует абстрактных задач, то подсказывать тебе ход решения - только кайф ломать.
-А если ты, как я понимаю , с программированием в ладах и хочешь создать утилиту ,исключающую мозгоручной труд по определению стилей , для общего пользования - это неизбежно приведет к изменению правил:не для того параметр скрывали, чтобы каждый, нажав кнопку, мог его раскрыть.
- Если только для себя: для работы по трансферам и со сборной?? Довольно разумно, но быть донором идей нет желания.
Кстати,есть вариант обмена игроков.Сейчас не готов - вечером отпишусь в личку.
Мне просто интересно.
А если ещё появится заинтересованный собеседник, то это гораздо "кайфовее", чем разговаривать в этой теме, по большому счёту, самому с собой.
Никакой универсальной программы у меня нет, поэтому не хочется думать о том, что это приведёт к смене правил, т.к. это похоже на делёжку шкуры неубитого медведя.
Искренне заинтересованный собеседник - гораздо лучше донора идей.
Нови4-0к писал(а):x(транс)*A*x - это получится уравнение сумма (xi*xj*Aij) - уравнение второй степени. Откуда это?
у нас же есть система, каждое уравнение в которой имеет вид: x1+x2+...+x26 = С. Т.е. линейная. Я вообще не понимаю, как перейти от нее к нелинейной и зачем это нужно. Методы решения линейных уравнений куда проще.
Немного не понял, что ты хотел спросить.
Ты хочешь, чтобы я подробно тебе расписал, откуда берётся (xi*xj*Aij) и как осуществляется переход от линейной системы к нелинейной?
Если да, то прошу прощения, т.к. довольно кратко и неполно обо всём этом рассказывал.
Написать об этом подробнее на каком-нибудь конкретном примере?

 скалярное произведение и евклидово пространство
Пока добавлю, что существует точное определение для слагаемых вида (Xi(транс) * A * Xj) и вида (Xi(транс) * Е * Xj) = (Xi(транс) * Xj) в нелинейных уравнениях общей системы (слагаемые первого вида соответствуют прибавке к Вз от взаимодействия футболистов i и j, а слагаемые второго типа соответствуют прибавке к Вз от взаимодействия футболиста j со стилем команды в матче i).
Одно такое слагаемое - это невырожденный симметричный билинейный функционал от двух векторов 6-мерного линейного пространства (от Xi и Xj).
Такой объект называется скалярное произведение.
Да-да, всем хорошо известное скалярное произведение.
В качестве векторов в нашей системе втречаются только 6 стандартных базисных векторов этого линейного пространства (будем обозначать наше линейное пространство буквой L).

Ещё один точный факт - в нашей задаче 6-мерное линейное пространство векторов является евклидовым, т.к. скалярное произведение самого на себя любого вектора, принадлежащего пространству L, неотрицательно.
Для скалярного произведения второго вида: X(транс) * X >= 0 для любого вектора X, принадлежащего пространству L, - очевидно, т.к. это определение классического привычного со школы скалярного произведения в евклидовом пространстве.
Этого уже достаточно, чтобы считать L - евклидовым пространством.
Однако можно показать, что и другое скалярное произведение вида X(транс) * A * X >= 0 для любого X, принадлежащего пространству L.
0d1n
 
 
 

Re: Алгебра стилей
Сообщение Shustrik 07 ноя 2010, 17:33
Тогда чем упрощает решение переход от линейной системы к нелинейной?
Shustrik
Профи
 
Сообщений: 874
Зарегистрирован: 20 июн 2007, 22:08
Рейтинг: 500
 
(без команды)
 

Re: Алгебра стилей
Сообщение 0d1n 09 ноя 2010, 03:16
Shustrik писал(а):Тогда чем упрощает решение переход от линейной системы к нелинейной?
Всё верно - ничем не упрощает.
У нас и решения для нелинейной системы пока нет (если вообще будет).
Просто линейная система, с моего неопытного первого взгляда, будет иметь кучу свободных коэффициентов, которые решение системы сводят к тупому (возможно слишком длинному по времени) перебору всех возможных значений этих свободных переменных, но как будет дело обстоять на практике - я не знаю.
Даже просто в качестве теста посчитать количество переменных вручную в какой-нибудь одной команде - лень, поэтому чтобы дальше двигаться в этом направлении, следует написать утилитку для оценки количества линейных переменных и выложить её в свободное обращение.
Можно будет и самому набрать немного статистики по чужим командам, а может мены захотят сами поиграться с выложенной для общего пользования программкой и просто расскажут здесь на форуме о полученных в их командах результатах - таким образом будет хоть небольшая статистика количества переменных в командах.
Кроме того, что ещё можно попробовать сделать с линейной системой для уменьшения свободных переменных, я не заметил, поэтому мне и нечего сказать что-нибудь новое по этому поводу.
Последний раз говорил только о построении основной линейной системы не из всех матчей, а из нескольких самых популярных игроков.

А определение билинейного функционала как скалярного произведения - это при "листании" одной книги бросилось в глаза.
Сейчас, например, интересно понять, почему возникает следующая ситуация: при коллизии двух игроков скалярное произведение, реализуемое матрицей коллизий, двух линейно-независимых базисных векторов, символизирующих коллизионные стили, даёт не нуль, как в случае стандартного определения скалярного произведения линейно-независимых векторов.
Как вообще связаны ортогональность и линейная независимость векторов в самом общем смысле?
Пока такое ощущение, что линейная независимость векторов и ортогональность - различные определения, которые в нашем узком привычном понимании обычного пространства очень тесно связаны через то, что стандартное скалярное произведение двух линейно-независимых векторов даёт нуль и таким образом определяет ортогональность этих двух векторов.
Очень интересно было бы узнать, что же там такое странное (для нашего привычного понимания обычного пространства и стандартного скалярного произведения) происходит?
Но, пожалуй, практичней будет сперва вернуться к линейной алгебре и поисследовать команды на количество переменных при построении общей системы.

Несколько недель назад Власик предоставил код его парсера, и поэтому сейчас есть возможность сделать следующее:
1) добавить в парсер возможность сбора информации не только по именам, но и по уникальным 6-значным номерам игроков, т.к. во ВСОЛе существуют тёзки;
2) написать утилиту, которая на основе информации, собранной парсером Власика, подсчитывает число различных переменных иксов и игреков во всех сыгранных матчах, а также рассчитывает количество матчей, сыгранных каждым футболистом команды.

Пока можно заняться этим.
0d1n
 
 
 

След.

Вернуться в Оффтопик