無向グラフ G = (V, E) のクリーク C は、頂点のサブセット C ⊆ V であり、2 つの異なる頂点がすべて隣接しています。これは、C によって誘導される G のサブグラフが完全であるという条件と等価です。場合によっては、クリークという用語がサブグラフを直接参照することもあります。
だから、私は Apache-Spark で GraphX を使用しています。ドキュメンテーション ガイドを読みましたが、グラフ内の連結成分を見つける方法は提供されていますが、クリーク/強連結成分は提供されていません。Scalaを使用してそれを行うにはどうすればよいですか? ありがとう!
編集: コメントで示唆されているように、同じタスクを実行するために R で記述したコードは次のとおりです: (このコードを Spark で使用する際の問題は、Spark で R を使用できる最近リリースされた SparkR が制限されていることです。ライブラリの面でのサポート (たとえば、igraph). したがって、アルゴリズムが必要な GraphX と Scala を使い始めました。
library(igraph)
files <- paste0("NP",1:10,".txt") // Files which represent graphs
func.clique <- function(file)
{
w <- read.table(file)
g <- graph.edgelist(cbind(as.character(w$V1),as.character(w$V2)))
plot(g)
cli <- cliques(g)
return (cli)
}
cliquevalues <- sapply(files,func.clique)