Вы ищете что-то нестандартное или алгоритмические идеи о том, как реализовать это самостоятельно? Я могу помочь вам с последним.
То, что вы хотите сделать, называется сжатие вершин, которые имеют ровно 2
соседей, то есть имеют степень 2
.
Для реализации этого сделайте следующее:
while exists vertex v with degree 2:
- remove v and the 2 outgoing edges
- add a new edge between the neighbours of v
- the weight of the new edge is the sum of the weights of the deleted edge
То есть, если у вас есть следующая часть графика: u ---2--- v ---5--- w
и применить сжатие, вы получите u ---7--- w
. [ 1110]
Простое итеративное выполнение до тех пор, пока не останется степень вершины 2
, преобразует граф на первом изображении в граф на втором.
Точные детали реализации, конечно, будут зависеть от того, какую структуру данных вы используете для представления своего графа в Python (или любого другого языка, который используется).
Я думаю, что лучший ответ здесь заключается в том, что он не документирован и не поддерживается, поэтому не полагайтесь на него. Хотя интересно знать, как работает SQL Server внутри, все, что вы делаете с этими знаниями, может сломаться в будущем исправлении, пакете обновления или выпуске.
-- Note: database @dbname may not exist anymore
-- Change compatibility level
-- If invoke gets error, exception will abort this proc.
EXEC %%DatabaseEx(Name = @dbname).SetCompatibility(Level = @input_cmptlevel)
похоже на способ обращения к переменной базе данных как к объекту и внесения изменений в конфигурацию
Интересная находка.
Системные SP также ссылаются на %% Object, %% Relation, %% ColumnEx, %% LinkedServer, %% Owner, %% CurrentDatabase (), %% ErrorMessage , %% Module, %% DatabaseRef, %% LocalLogin, %% Alias, %% ServerConfiguration, %% IndexOrStats, %% ScalarType (и т. Д.)
Моя интерпретация заключается в том, что %% () получает какой-то (COM? ) объект на основе критериев фильтра с последующим вызовом метода.