Лабораторная работа: Лабораторная работа 5
Описание
Характеристики лабораторной работы
Список файлов
- Лабораторная работа 5
- Определитель матрицы и простые числа Мерсенна (Захаров).docx 99,03 Kb
- Определитель матрицы и простые числа Мерсенна (Захаров).source
- G.txt 79 b
- G10.txt 212 b
- G100.txt 19,63 Kb
- G15.txt 467 b
- lab5_1.fptl 3,99 Kb
- lab5_2.fptl 2,49 Kb
- Перемножение матриц и поиск минимального остовного дерева (Машеров).docx 36,63 Kb
- Перемножение матриц и поиск минимального остовного дерева (Машеров).source
- MatrixA.txt 17 b
- MatrixB.txt 20 b
- m7.txt 137 b
- matrixMult.txt 3,99 Kb
- prims_algorithm.txt 5,02 Kb
6
1 6 3 4 8 5
6 5 8 9 6 6
5 6 5 1 5 2
1 2 4 1 6 1
8 6 3 4 8 8
5 6 5 1 5 7
10
9 6 9 4 8 1 5 1 9 2
6 5 8 9 6 6 5 8 9 6
5 6 5 1 5 2 1 5 2 8
1 2 4 1 6 1 4 1 6 3
8 6 3 4 8 8 5 6 5 1
5 6 5 3 5 7 4 8 8 5
1 2 4 3 6 2 4 3 6 5
1 6 4 4 3 5 5 2 5 7
5 6 1 4 5 1 4 0 8 1
8 6 1 4 1 6 1 6 1 3
100
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
1 2 4 1 6 5 8 9 6 3 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5
8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9
8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5
6 5 8 9 6 3 4 8 6 5 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6
5 6 5 1 5 8 9 6 3 4 8 6 3 4 8 6 5 7 1 2 8 6 3 4 8 6 5 7 1 2 5 6 5 1 5 8 9 6 3 4 9 6 3 4 1 2 4 1 6 5 8 9 6 3 1 2 4 1 6 5 8 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3 4 9 6 3 6 5 8 9 6 3 4 8 6 5 6 5 8 9 6 3
15
9 6 9 4 8 1 5 1 9 2 5 2 3 1 9
6 5 8 9 6 6 5 8 9 6 1 6 1 4 1
5 6 5 1 5 2 1 5 2 8 4 0 8 1 7
1 2 4 1 6 1 4 1 6 3 7 3 6 1 2
8 6 3 4 8 8 5 6 5 1 3 6 8 4 9
5 6 5 3 5 7 4 8 8 5 2 4 8 1 2
1 2 4 3 6 2 4 3 6 5 2 3 1 3 4
1 6 4 4 3 5 5 2 5 7 7 8 1 3 6
5 6 1 4 5 1 4 0 8 1 7 5 3 2 6
8 6 1 4 1 6 1 6 1 3 3 2 6 9 2
8 3 6 5 3 7 4 4 8 8 6 5 8 1 1
6 2 5 4 1 5 3 6 8 4 9 2 4 1 6
7 5 5 2 5 7 7 8 1 3 6 6 3 4 8
8 5 6 3 6 5 2 3 1 3 4 3 7 4 4
8 8 6 5 6 8 4 9 2 4 1 1 4 1 6
2 3
1 2 3
4 5 6
3 2
1 3
5 2
2 1
7
99 7 99 5 99 99 99
7 99 8 9 7 99 99
99 8 99 99 5 99 99
5 9 99 99 15 6 99
99 7 5 15 99 8 9
99 99 99 6 8 99 11
99 99 99 99 9 11 99
Data List['t]
{
List = c_nil ++ 't * List['t].c_cons;
}
Scheme MatrixMult
{
@ = ([1].readMatrix * [2].readMatrix * 0 * 0).matrixMult.print;
/// matrixMult: возвращает результат умножения двух матриц
// [1]: матрица
// [2]: количество строчек матрицы [1]
// [3]: количество столбцов матрицы [1]
// [4]: матрица
// [5]: количество строчек матрицы [2]
// [6]: количество столбцов матрицы [2]
// [7]: номер текущей строки
// [8]: номер текущего столбца
// -> [1]: выходная матрица
matrixMult = ([7] * [2]).equal -> c_nil,
(rowMult * ([1] *[2] *[3] *[4] *[5]* [6] * ([7] * 1).add * 0).matrixMult).c_cons;
/// rowMult: возвращает строку (список) результирующей матрицы
// [1]..[8]:
// -> [1]: строка результирующей матрицы
rowMult = ([8] * [6]).equal -> c_nil,
((id * 0).elemSum * ([1] *[2] *[3] *[4] *[5]* [6] * [7] * ([8] * 1).add).rowMult.[1]).c_cons;
// elemSum: возвращает элемент результирующей матрицы
// [1]..[8]:
// [9]: номер текущего столбца
// -> [1]: элемент матрицы
elemSum = ([9] * [3]).equal -> 0,
((([1] * [7] * [9]).nnth * ([4] * [9] * [8]).nnth).mul * ([1] * [2] * [3] *[4] *[5] *[6] *[7] *[8] * ([9] * 1).add).elemSum).add;
/// readMatrix - читает матрицу из файла
// [1]: файловая строка
// -> [1]: список строчек матрицы (строчка - список элементов строки)
// -> [2]: количество строчек матрицы
// -> [3]: количество столбцов матрицы
readMatrix = ([1].readFile.readSize).(readElements * [2] * [3]);
/// readSize - читает размер матрицы в файле
// [1]: файловая строка
// -> [1]: файловая строчка с элементами матрицы
// -> [2]: количество строчек
// -> [3]: количество столбцов
readSize = ([1] *"[\\d]+").getToken.(([2] *"[\\d]+").getToken.([2] * [1].toInt) * [1].toInt).([1] * [3] * [2]);
/// readNumber - читает число в файле
// [1]: файловая строка
// -> [1]: остаток файловой строки
// -> [2]: прочитанное число
readNumber = ([1] *"[\\d]+").getToken.([2] * [1].toInt);
/// readElements - читает элементы матрицы в файле
// [1]: файловая строка
// [2]: количество строк
// [3]: количество столбцов
// -> [1]: список строчек (строчка - список элементов строки)
readElements = ([1] * "").equal -> c_nil ,
(([1] * [2] * [3] * 0).readLine * [2] * [3]).([1] * ([2] * [3] * [4]).readElements).c_cons;
/// readLine - читает элементы строки матрицы в файле
// [1]: файловая строка
// [2]: количество строк
// [3]: количество столбцов
// [4]: номер текущего элемента
// -> [1]: список прочитанной строки
// -> [2]: остаток файловой строки
readLine = ([3] * [4]).equal -> c_nil * [1],
(([1].readNumber * id).([2] * ([1] * [4] * [5] * ([6] * 1).add).readLine)).(([1] * [2]).c_cons * [3]);
/// orderList: создает список вида (1,2,3, ... , N)
// [1]: число элементов в списке
// -> [1]: список с упорядоченными значениями
orderList = ([1] * 0).orderList1;
orderList1 = ([1] * [2]).equal -> c_nil,
([1] * ([2] * 1).add).([2] * orderList1).c_cons;
/// in,notIn: проверяет, есть ли элемент в списке
// [1]: список
// [2]: элемент
// -> [1]: true или false
in = ~c_nil -> false,
([1].~c_cons.[1] * [2]).equal -> true,
([1].~c_cons.[2] * [2]).in;
notIn = in -> false, true;
/// nth: возвращает n-ый элемент списка
// [1]: список
// [2]: номер
// -> [1] : элемент списка
nth = ([1]*[2] * 0).nth1;
nth1 = ([2] * [3]).equal -> [1].~c_cons.[1],
([1].~c_cons.[2] * [2] * ([3]*1).add).nth1;
// nnth: возвращает элемент в списке списков (типа S[i,j])
// [1]: список
// [2]: номер внутреннего списка
// [3]: номер элемента внутреннего списка
// -> [1] : элемент списка
nnth = (([1] * [2]).nth * [3]).nth;
/// delete : возвращает n:ый элемент списка
// [1]: список
// [2]: элемент
// -> [1] : cписок
delete = ~c_nil -> c_nil,
([1].~c_cons.[1] * [2]).equal -> [1].~c_cons.[2],
([1].~c_cons.[1] * ([1].~c_cons.[2] * [2]).delete).c_cons;
}
Application
% MatrixMult("MatrixA.txt","MatrixB.txt")
Data List['t]
{
List = c_nil ++ 't * List['t].c_cons;
}
Data Pair
{
Pair = int * int.c_pair;
}
Scheme Prims_algorithm
{
/// readSize - читает количество вершин в файле
// [1]: файловая строка
// -> [1]: файловая строчка с элементами матрицы
// -> [2]: число вершин
readSize = readNumber;
/// readNumber - читает число в файле
// [1]: файловая строка
// -> [1]: остаток файловой строки
// -> [2]: прочитанное число
readNumber = ([1] *"[\\d]+").getToken.([2] * [1].toInt);
/// readElements - читает элементы матрицы в файле
// [1]: файловая строка
// [2]: количество строк
// -> [1]: список строчек (строчка - список элементов строки)
readElements = ([1] * "").equal -> c_nil ,
(([1] * [2] * 0).readLine * [2]).([1] * ([2] * [3]).readElements).c_cons;
/// readLine - читает элементы строки матрицы в файле
// [1]: файловая строка
// [2]: количество строк
// [3]: номер текущего элемента
// -> [1]: список прочитанной строки
// -> [2]: остаток файловой строки
readLine = ([2] * [3]).equal -> c_nil * [1],
(([1].readNumber * id).([2] * ([1] * [4] * ([5] * 1).add).readLine)).(([1] * [2]).c_cons * [3]);
/// orderList: создает список вида (N - 1, N - 2, ..., 2, 1)
// [1]: число элементов в списке
// -> [1]: список с упорядоченными значениями
orderList = ([1] * [1]).orderList1;
orderList1 = ([2] * 1).equal -> c_nil,
([1] * ([2] * 1).sub).([2] * orderList1).c_cons;
/// in,notIn: проверяет, есть ли элемент в списке
// in, notIn
// [1]: список
// [2]: элемент
// -> [1]: true или false
in = ~c_nil -> false,
([1].~c_cons.[1] * [2]).equal -> true,
([1].~c_cons.[2] * [2]).in;
notIn = in -> false, true;
/// nth: возвращает n-ый элемент списка
// nth
// [1]: список
// [2]: номер
// -> [1] : элемент списка
nth = ([1]*[2] * 0).nth1;
nth1 = ([2] * [3]).equal -> [1].~c_cons.[1],
([1].~c_cons.[2] * [2] * ([3]*1).add).nth1;
// nnth: возвращает элемент в списке списков (типа S[i,j])
// nth
// [1]: список
// [2]: номер внутреннего списка
// [3]: номер элемента внутреннего списка
// -> [1] : элемент списка
nnth = (([1] * [2]).nth * [3]).nth;
/// delete : возвращает n:ый элемент списка
// nth
// [1]: список
// [2]: элемент
// -> [1] : cписок
delete = ~c_nil -> c_nil,
([1].~c_cons.[1] * [2]).equal -> [1].~c_cons.[2],
([1].~c_cons.[1] * ([1].~c_cons.[2] * [2]).delete).c_cons;
// Алгоритм
maxWeightValue = 99;
// ------------------------------
// prims
// [1] - матрица смежности
// [2] - множество вершин, которые осталось обработать
// [3] - номер текущей итерации
// [4] - размер
// [5] - текущий остов
// -> [1] - остов
prims = ([3] * ([4] * 1).sub).equal -> [5],
([1] * // [1]
(id * ([1] *[2] * 0 * [4] * 99 * 0 * 0).Iteration).
(([2] * [8]).delete * // [2]
([3] * 1).add * // [3]
[4] * // [4]
(([8] * [7]).c_pair * [5]).c_cons)).prims;// [5]
// ------------------------------
// Iteration - итерация алгоритма Прима
// [1] - матрица смежности
// [2] - множество вершин, которые осталось обработать
// [3] - номер вершины для обработки
// [4] - размер
// [5] - текущее минимальное значение
// [6] - текущий номер минимальной вершины
// [7] - текущий номер минимальной вершины
// -> [1] - минимальное значение
// -> [2] - номер минимальной вершины
// -> [3] - номер минимальной вершины
Iteration = ([3] * [4]).less ->
(([2] * [3]).notIn -> checkForMin,
([1] *[2] * ([3] * 1).add * [4] * [5] * [6] * [7]).Iteration),
[5] * [6] * [7];
checkForMin = (id * minEdge).
(([8] * [5]).less -> ([1] *[2] * ([3] * 1).add * [4] * [8] * [3] *[9]).Iteration,
([1] *[2] * ([3] * 1).add * [4] * [5] * [6] * [7]).Iteration);
minEdge = ([1] * [2] * [3] * 0 * [4] * 99 * 0).adjIteration;
// ------------------------------
// adjIteration,adjCheckForMin
// [1] - матрица смежности
// [2] - множество вершин, которые осталось обработать
// [3] - номер вершины для обработки
// [4] - номер вершины, смежной c [3]
// [5] - размер
// [6] - текущее минимальное значение
// [7] - текущий номер минимальной вершины
// -> [1] - минимальное значение
// -> [2] - номер минимальной вершины
adjIteration = ([4] * [5]).less ->
(([2] * [4]).in -> adjCheckForMin,
([1] *[2] * [3] * ([4] * 1).add * [5] * [6] * [7]).adjIteration),
[6] * [7];
adjCheckForMin = (id * ([1] * [3] * [4]).nnth).
(([8] * [6]).less -> ([1] * [2] * [3] * ([4] * 1).add * [5] * [8] * [4]).adjIteration,
([1] *[2] * [3] * ([4] * 1).add * [5] * [6] * [7]).adjIteration);
test = ([1] *[2] * 0 * [4] * 99 * 0 * 0).Iteration;
//test = ([2] * 5).delete;
@ = ([1].readFile.readSize * 0 * c_nil).(readElements * [2].orderList * 0 * [2] * c_nil).prims.print;
// 1 = Итерация * [2] - Размер
}
Application
% Prims_algorithm("m7.txt")
Начать зарабатывать