Программирование - это просто
Advertisement
Главная arrow Математика и информатика arrow Математическое моделирование (платный раздел) arrow Математическое моделирование. Урок 14. Поиск закономерностей
14.06.2025 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Математическое моделирование. Урок 14. Поиск закономерностей Печать E-mail
Автор megabax   
03.06.2025 г.
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

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

...

...

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

Последнее обновление ( 03.06.2025 г. )
 
Пред. »
 
© 2025 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги