Выполнил: Валуйский Д.О. Цель работы: Изучить основы теории геометрических графов и методов проверки на изоморфизм; Оценить вероятность появления редких графов; Изучить методы оптимизации времени работы программы; Задача работы: Написать программу, подсчитывающую количество появлений редких графов во время статистических экспериментов. 2 Пример редкого графа: - узел ad hoc сети - зона приема/передачи узла 3 Инвариант графа – диаметр графа, индекс Винера, индекс Рандича и т.д. Полный инвариант графа - мини-код графа, макси-код графа. 4 На многопроцессорных компьютерах многопоточность реализована как смесь квантования и подлинного параллелизма, когда разные потоки выполняют код на разных CPU; Встроенная поддержка многопоточности в С# .NET Framework. 5 Подготовительный этап - построение хэш-таблицы по мини-коду редкого графа: 1. Построение матрицы смежности по мини-коду; 2. Получение множества новых матриц смежности путем перестановок строк и столбцов; 3. Получение десятичного числа для каждой новой матрицы смежности; 4. Занесение результатов в хэш-таблицу (ключ –полученное число; значение – исходный мини-код). 6 Основной этап – разбиение на потоки: 1. Генерация необходимого количества случайных геометрических графов; 2. Получение десятичного числа для сгенерированного графа; 3. Проверка на наличие данного числа в хэш-таблице; 4. Объединение результатов в конце работы потока. 7 decimalToBinary(int decimalNumber); binaryToDecimal(string binaryString); getBinaryNumberFromMatrix(int[,] matrix); getMatrixFromBinaryNumber(string binaryString); getGeneratedMatrix(); unionResult(int[] resultMatrix, int countForThread); 8 9 Компьютеры, используемые при проверке Количество потоков, задаваемых для эксперимента 1-ый 2-ый 1 12367,34124 сек. 8658,4392344 сек. 2 7568,45326 сек. 5364,64284 сек. 4 8904,35346 сек. 4508,9498972 сек. 8 9443,525225 сек. 4521,2516008 сек. 10 12000 75 1103 10000 1118 1247 8000 1467 1531 6000 3295 4000 3309 3448 2000 3452 7916 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 16350 11 Изучены геометрические графы и способы их проверки на изоморфизм; Реализована программа оценки вероятности появления редких графов; С её помощью получена более точная и надежная оценка вероятности появления исследуемых графов; С помощью многопоточных средств языка C# повышена эффективность работы программы(в среднем, прирост производительности 40%). 12 13