Как рассчитать собственный вектор модели «многие ко многим»? - PullRequest
0 голосов
/ 30 мая 2018

У меня есть модель «многие ко многим», представляющая граф зависимостей.Как я могу вычислить собственный вектор этого графа?

Есть модель отношений:

class Relation < ApplicationRecord
    belongs_to :dependency, class_name: "Article"
    belongs_to :dependent, class_name: "Article"
end

И таблица отношений:

create_table "relations", force: :cascade do |t|
    t.integer "dependency_id"
    t.integer "dependent_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.integer "user_id"
    t.index ["dependency_id", "dependent_id", "user_id"], name: "index_relations_on_dependency_id_and_dependent_id_and_user_id", unique: true
    t.index ["dependency_id"], name: "index_relations_on_dependency_id"
    t.index ["dependent_id"], name: "index_relations_on_dependent_id"
    t.index ["user_id"], name: "index_relations_on_user_id"
end

Ответы [ 2 ]

0 голосов
/ 31 мая 2018

Используйте rankable_graph .

Драгоценный камень ", в основном написанный на C с красивой оболочкой Ruby. Он предназначен для использования с большими, но не огромными графами, так как они лучше обрабатываются с помощьюраспределенное решение Map-Reduce. "

0 голосов
/ 30 мая 2018

Возможно использование класса Ruby Matrix :: EigenvalueDecomposition?

m = Matrix[ [1, 2, 3], [4, 5, 6], [7, 8, 9] ]
Matrix::EigenvalueDecomposition.new(m).eigenvalues
  => [16.116843969807057, -1.1168439698070447, -8.046297179356069e-16] 

Matrix::EigenvalueDecomposition.new(m).eigenvectors
  => [Vector[0.23197068724628633, 0.5253220933012341, 0.8186734993561815], Vector[0.8169642040610365, 0.09018835790853766, -0.6365874882439635], Vector[0.40824829046386324, -0.8164965809277259, 0.40824829046386263]] 

См. https://docs.ruby -lang.org / ru / 2.5.0 / Matrix / EigenvalueDecomposition.html

...