Saya sedang mengerjakan julia dengan perpustakaan Metagraphs.jl
. Untuk melakukan masalah optimasi, saya ingin mendapatkan himpunan/daftar sisi pada grafik yang menunjuk ke himpunan simpul khusus yang memiliki 2 properti tertentu yang sama.
Tebakan pertama saya adalah mendapatkan set/daftar simpul terlebih dahulu. Namun saya menghadapi masalah pertama yaitu fungsi filter_vertices
sepertinya tidak menerima penerapan filter pada lebih dari satu properti. Berikut ini contoh apa yang ingin saya lakukan:
g = DiGraph(5)
mg = MetaDiGraph(g, 1.0)
add_vertex!(mg)
add_edge!(mg,1,2)
add_edge!(mg,1,3)
add_edge!(mg,1,4)
add_edge!(mg,2,5)
add_edge!(mg,3,5)
add_edge!(mg,5,6)
add_edge!(mg,4,6)
set_props!(mg,3,Dict(:prop1=>1,:prop2=>2))
set_props!(mg,1,Dict(:prop1=>1,:prop2=>0))
set_props!(mg,2,Dict(:prop1=>1,:prop2=>0))
set_props!(mg,4,Dict(:prop1=>0,:prop2=>2))
set_props!(mg,5,Dict(:prop1=>0,:prop2=>2))
set_props!(mg,6,Dict(:prop1=>0,:prop2=>0))
col=collect(filter_vertices(mg,:prop1,1,:prop2,2))
Dan saya ingin col
menemukan simpul 3 dan tidak yang lain.
Tetapi filter_vertices
hanya akan menerima satu properti pada satu waktu dan kemudian membuatnya lebih mahal untuk melakukan perulangan dengan 2 filter dan kemudian mencoba membandingkan untuk mengurutkan daftar dengan simpul yang memiliki kedua properti tersebut.
Mempertimbangkan ukuran grafik saya, saya ingin menghindari mendefinisikan kumpulan ini dengan banyak loop dan mahal. Adakah di antara Anda yang memiliki gagasan tentang cara mengatasi masalah ini dengan cara yang mudah dan lembut?
Saya akhirnya membuat ini untuk menjawab pertanyaan saya sendiri:
fil3=Array{Int64,1}()
fil1=filter_vertices(mg,:prop1,1)
for f in fil1
if get_prop(mg,f,:prop2)==2
push!(fil3,f)
end
end
println(fil3)
Tapi beri tahu saya jika Anda mendapatkan sesuatu yang lebih menarik
Terima kasih atas bantuan Anda!