CLPで最大流問題を解く方法の説明をします。最大流問題って自分は知らなかったのですが、グラフが与えられ、ノードからノードを結ぶそれぞれのエッジに転送量の上限(転送するのはデータでも物でも何でも良い)が決められているとき、あるノードからもう一つのノードへの最大の転送量を求めるという問題です。電子回路のキルヒホッフの法則のように、各ノードに入る量とそのノードから出ていく量は一致している必要があります(始点と終点は除く)つまりあるノードに注目したとき、入ってくる量の許容量が6で出ていく量の許容量が4の場合は少ない方の4に合わされてしまうことになります(ボトルネックとなる)自分の勝手な解釈ですが、いくつかのノードが接続された形の水道管ネットワークみたいのがあったとして、ノード同士をつなぐ水道管の最大流量が決まっているとき、入口Aから出口Bに流せる最大の水の量を求めるみたいな感じかなとイメージしました。図)が与えられたときにノード1からノード7への最大流を求めるプログラムを書きます。エッジの数値はノード間の距離ではなくエッジの許容流量を表していることに注意です。library(max_flow)を使用します。library(graph_algorithms)も使用します。グラフの作成はmake_graph/3を使用します(使い方は以前の記事参照)最大流問題を解く述語はmax_flow/5やmax_flow/7ですが、今回は得られる情報が多いmax_flow/7を使用します。max_flow(+Graph,+CapacityArg,+SourceNode,+SinkNode,-MaxFlowValue,-MaxFlowEdges,-MaxFlowEdgesGraph)引数の意味は以下となります。cpu)最大9の量流せるようですね。一応注意点ですがこのlibrary(max_flow)はステータスが「prototype」となっていることに気を付けてください。バグ見つかったらECLiPSeの開発者に報告すると喜ばれます。手間でしたら私(koyahataアットマークkoyahatataku.com)に報告くだされば私が報告します。コメントをキャンセルメールアドレスが公開されることはありません。46CHRをGPUで実行させる論文を読みました。