Расчет компонент слабой связности. Под компонентами слабой связности понимаются максимальные по включению компоненты графа (подграфы), такие, что из любой вершины компоненты (подграфа) существует путь в любую другую вершину этой компоненты (подграфа). Ориентация ребер графа игнорируется (ориентированные ребра рассматриваются как неориентированные).
Полное описание, параметры и ограничения
СпособПолученияКомпонентСвязностиРасчетаСистемЛинейныхУравнений.КомпонентыСлабойСвязности (ConnectedComponentsOfSystemOfLinearEquationsCalculationGettingMethod.WeaklyConnectedComponents)
СпособПолученияКомпонентСвязностиРасчетаСистемЛинейныхУравнений (ConnectedComponentsOfSystemOfLinearEquationsCalculationGettingMethod)
КомпонентыСлабойСвязности (WeaklyConnectedComponents)
Доступен, начиная с версии 8.3.15.
Описание:
Расчет компонент слабой связности.
Под компонентами слабой связности понимаются максимальные по включению компоненты графа (подграфы), такие, что из любой вершины компоненты (подграфа) существует путь в любую другую вершину этой компоненты (подграфа). Ориентация ребер графа игнорируется (ориентированные ребра рассматриваются как неориентированные).
Использование в версии:
Доступен, начиная с версии 8.3.15.
Методическая информация
Практические примеры
Разобрать граф своих работ: КомпонентыСлабойСвязности
Реальный граф из пяти собственных вершин передаётся расчёту связности, а не численному решателю без свободных членов.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Тело серверной команды своей обработки, дополнительная функция в том же модуле. Источник — только свой граф в памяти.
Вершины 0 / 1 / 2 связаны в обе стороны, 3 / 4 тоже; между блоками есть одна направленная связь 2 → 3. Свободные члены и ИсточникДанныхУзлов для этого графового метода не задаются.
Расчет = Новый РасчетСистемЛинейныхУравнений;
Расчет.ИсточникДанныхСвязей = СвоиСвязиКнижныхРабот();
Расчет.КолонкаУравненияВСвязях = "Уравнение";
Расчет.КолонкаПеременныеВСвязях = "Переменная";
Описание = Расчет.ОписанияСистем.Добавить();
Описание.КолонкаКоэффициентовВСвязях = "Вес";
Компоненты = Расчет.ПолучитьКомпонентыСвязности(СпособПолученияКомпонентСвязностиРасчетаСистемЛинейныхУравнений.КомпонентыСлабойСвязности);
Для Каждого СтрокаКомпоненты Из Компоненты Цикл
Сообщить("Узел " + Строка(СтрокаКомпоненты[0]) + ", компонента " + Строка(СтрокаКомпоненты[1]));
КонецЦикла;Тот же модуль: семь направленных связей пяти своих работ
Функция СвоиСвязиКнижныхРабот()
Связи = Новый ТаблицаЗначений;
Связи.Колонки.Добавить("Уравнение", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("Переменная", Новый ОписаниеТипов("Число"));
Связи.Колонки.Добавить("Вес", Новый ОписаниеТипов("Число"));
Ребра = Новый Массив;
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 0, 1, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 1, 0, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 1, 2, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 2, 1, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 3, 4, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 4, 3, 1));
Ребра.Добавить(Новый Структура("Уравнение,Переменная,Вес", 2, 3, 1));
Для Каждого Ребро Из Ребра Цикл
ЗаполнитьЗначенияСвойств(Связи.Добавить(), Ребро);
КонецЦикла;
Возврат Связи;
КонецФункцииРазбор по шагам
Соберите собственные связи и одно описание с колонкой Вес.
Передайте вариант компоненты явно.
Сравните принадлежность узлов, не фиксируя номера компонент.
Как проверить результат
КомпонентыСлабойСвязности не различает направление для принадлежности; КомпонентыСильнойСвязности требует взаимной достижимости. Специальный третий вариант предназначен для анализа механизма решения и имеет собственный контракт — это не синоним обычных сильных компонент.
Первая колонка результата — номер узла, вторая — номер компоненты. Конкретные номера компонент не считаются постоянными. BSL при сборке HTML не выполнялся.
Ожидаемый результат
Показан реальный графовый расчёт с явным методом и полностью заданным источником.
На что обратить внимание
Не вызывайте численное решение для этого графа, у которого не заданы правые части уравнений.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.