Программирование - это просто
Advertisement
Главная arrow Математика и информатика arrow Математическое моделирование (платный раздел). arrow Математическое моделирование. Урок 14. Поиск закономерностей
19.10.2017 г.
Главное меню
Главная
Системный подход
Интернет магазин
Биржевые роботы
Программные продукты
Математика и информатика
1С:Предприятие
C#, Delphi, VB, F#, Web и пр.
Искусственный интеллект
Услуги
Ча. Во. (FAQ)
Платный раздел
Наука для чайников
Разное
Размышления
Карта сайта
Друзья сайта
Excel-это не сложно
Все о финансах
Математическое моделирование. Урок 14. Поиск закономерностей Печать E-mail
Автор megabax   
21.08.2016 г.
New Page 1

Математическое моделирование. Урок 14. Поиск закономерностей

Чтобы смотреть урок полностью, подпишитесь на платный раздел.

В платном разделе статья находится здесь.


На прошлом уроке мы разработали класс маски, и алгоритм, который по маске создает порождаемую таблицу. Все это было сделано с целью в дальнейшем создать программу поиска зависимостей между переменными в исходной таблице. Теперь приступим к следующему шагу - разработаем алгоритм перебора всех вариантов маски. Как вы поняли из прошлого урока, перебор всех возможных комбинаций порождающих переменных - это перебор всех размещений для каждого числа переменных от 1 до N-1, где N - количество переменных в маске. Хороший вопрос: как перебрать размещение?

Итак, вот, допустим, у нас есть размещение N элементов из M. Первая комбинация - это все N элементов в начале:

1 2 3 .. N
1 M  

В данном примере M=2, но все последующие рассуждения будут справедливы и для других значений. Затем нам надо поставить последний элемент на все места от M+1 до N. После этого сдвинуть элементы от M-1 до M влево на один элемент и тоже само повторить с крайним элементом. Далее элементы M-1 и M сдвинуть еще раз и все повторить. Но все это выше описанное надо проделать для сдвигов не только M-1, M, но и для M-2,M-1,M и так вплоть для всем M. Короче, голова идет кругом

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

...

...

...

        private void btnDepend_Click(object sender, EventArgs e)

        {

            Mask mask = new Mask(3, 2);

            mask.template[0, 0] = 1;

            mask.template[1, 0] = 3;

            mask.template[2, 0] = 5;

            mask.template[0, 1] = 0;

            mask.template[1, 1] = 2;

            mask.template[2, 1] = 4;

 

            mask.exeptions.Add(0);

            mask.exeptions.Add(2);

            //mask.exeptions.Add(5);

 

 

            DependencyFinder df = new DependencyFinder();

            df.mask = mask;

            df.table = table;

            df.search();

 

            string s = "";

            foreach (int a in df.min_generated)

            {

                s = s + a.ToString() + ", ";

            }

 

            MessageBox.Show("Hmin="+df.minH.ToString() + "; маска: "+s);

        }

Теперь разберем некоторые тестовые примеры. Начнем вот с этого:

            //данный пример дает значение маски 5

            //маска 1,3,5

            //      0,2,4

            //исключения 0,2

            add_row_in_table(1, 1, 1);

            for (int i = 1; i <= 1000; i++)

            {

                int v1 = rnd.Next(10);

                int v2 = rnd.Next(10);

                add_row_in_table(v1, v2, v1+v2);

                add_row_in_table(v1, v2, 1);

            }

Как видим, тестовая выборка инициализируется случайными числами, за исключением одного значение, которое инициализируется единицей. В маске это значение соответствует позиции 4:

1 3 5
0 2 4

...

...

...Теперь перейдем к тестированию, ячейки 0 и 2 добавим в исключения, по сути, сделав вот такую маску:

1 3 5
  4

Смотрим, что у нас выдаст программа поиска зависимостей:

Математическое моделирование. Урок 14. Поиск закономерностей

Что характерно, мы можем запускать программу несколько раз, при этом каждый раз у нас будет генерироваться новая тестовая выборка, но значение порождаемой маски по прежнему будет 5:

1 3 5
  4

Посмотрим следующий тестовый пример...

...

...

...Итак, подведем итоги. Мы написали и протестировали программу поиска закономерностей. На следуем уроке попробуем искать закономерности в каких либо реальных данных, например, в биржевых котировках

Последнее обновление ( 21.08.2016 г. )
 
« След.   Пред. »
 
© 2017 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги
Мы принимаем
Банковские карты
Оплатите покупку в интернет-магазине банковскими картами VISA и Mastercard любого банка.
узнать больше
Электронный кошелек
Моментальная оплата покупок с помощью вашего электронного кошелька RBK Money.
узнать больше
Банковский платеж
Оплатите покупку в любом российском банке. Срок зачисления средств на счет - 3-5 рабочих дней.
узнать больше
Денежные переводы
Оплата покупок через крупнейшие системы денежных переводов CONTACT и Unistream.
узнать больше
Почтовые переводы
Оплатите покупку в любом отделении Почты России. Срок зачисления платежа - 3-4 рабочих дня.
узнать больше
Платежные терминалы
Оплата покупок в терминалах крупнейших платежных систем в любом городе России - быстро и без комиссии.
узнать больше