問題タブ [binary-decision-diagram]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
r - R で探索的決定木をプロットする方法
人々のグループが時間中に追跡され、3 つの時点で彼らが裁判官になりたいかどうか尋ねられたと仮定しましょう。その間、彼らは意見を変えるでしょう。時間の経過とともに、判断する/判断しないという意見の変化をグラフで示したいと思います。以下は、それをどのように表示できるかのアイデアです。
プロットの読み方は次のとおりです。
- 1,462 人の学生が抽出され、そのうち (400+295+22+147) 人が審査員になりたいと考えています (最初の行の束)。
- 青いパスは、最後に彼らが裁判官になることを意味します。
- 黒い道とは、最後に別のことをしたことを意味します。
- ラインが上がります:彼らは裁判官になりたいと思っています。
- 彼らは裁判官になりたくないのです。
- 線の太さは、この特定のパスを通過した人の数 (=パスの最後にプロットされた数) に比例します。
例:
(a) 118 人は、高校や大学では審査員になりたくなかったが、練習中に審査員になることを決めた。
(b) 練習までは 695 人がジャッジになることを決めていたが、練習後 400 人がジャッジになり、295 人が別のことをした。
主なアイデアは、どの種類の意思決定パスが存在し、どれが最も使用されているかを調査することです。
いくつか質問があります:
- この種のグラフに名前はありますか?
- このグラフをプロットできる R 関数は既にありますか?
- R関数がない場合:これをよりきれいにプロットする方法はありますか? 例: (3.1) カーブを隣接させたい (カーブ間のギャップやオーバーラップなし)。(3.2) 曲線の始点と終点は、y 軸に平行にする必要があります。
助言がありますか?
編集 1:
上記のものに似たプロットを見つけました: riverplot。たとえば、R ライブラリ riverplotまたはR bloggerを参照してください。リバープロットの欠点は、交差点で個々のスレッドまたはパスが失われることです。
データは次のとおりです。
以下は、プロットを取得するためのデータの変換です。
そして、ここにggplotがあります:
algorithm - 地図ビットセットのサブセットをチェックできるようなデータ構造?
キーが std::bitset であり、値が私が持っている構造である、大きな巨大なハッシュテーブル (すべての行をチェックできないほど大きい) (boost::unordered_map を使用する C++ で) があります。
テーブルにこれがあるとします:
map[01111101]
「Whatever」を返すようにマップをクエリすると。それは問題ありません。それがマップの目的です。しかし、「Hello」を返すようにクエリするmap[00110101]
と、「00010101」(Hello のキー) はクエリの「00110101」のサブセットであるためです。私はセットをビットで表現していますが、それは自明だと思います。
キーがクエリのサブセットであるようなエントリがテーブルに複数ある場合は、それらすべてが必要です。
このようなものがあるかどうかはわかりません。二分決定図を見ていますが、使用したことがなく、うまくいくかどうかわかりません。
ありがとう。
編集:表現を設定します。オブジェクト A、B、C、D、E、F、G のグループがあるとします。A、B、C と D、F の 2 つのセットがあります。それぞれ 1110000 と 0001010 として表します。したがって、1110000 は 0001010 (またはその逆) のサブセットではありませんが、1000100 は 1010101 のサブセットです。
binary-decision-diagram - CUDD を使用した 2 つの BDD の交差
次の 2 つのブール関数の 2 つの BDD の共通部分を見つけたいと思います。
これが私のコードです:
そして、ここに私が得た結果があります:
ここでわかるように、交差は A=0 を与え、B、C、および D を気にしません。私は、F と G の両方を満たす A、B、C、および D の値を期待していました。しかし、明らかに A=0 はF と G の両方の解。たとえば、関数 F に 0 を与える A=0,B=1 を選択できます。ここで何が問題なのですか?
min - CUDD: BDD を (最小限の) 標準形に変換します
既存の BDD をブール式の文字列としてエクスポートしようとしています。理想的には、最小限の長さの文字列または最小限の正規形が必要ですが、これ自体が難しい問題だと思います。BDD を短い文字列に変換する方法を知っていますか? 現在、私は機能を使用しています
しかし、変数がほとんどないBDDであっても、結果はほとんど判読できません。
c - CUDD で BLIF ファイルからインポートされた BDD を操作する
BLIF ファイルを CUDD パッケージにインポートし、そこから BDD を作成してから、いくつかの操作を実行しようとしています。ntr パッケージを使用して BLIF ファイルをインポートできました。ただし、結果の BDD 内の変数またはノードにアクセスする方法がわかりません。
関数用に独自の BDD を作成した場合、変数を作成しながら変数を呼び出して、さまざまな操作/操作を行うことができます。ただし、BLIF インポートでは、結果の ddManager (dd) とブール ネットワーク (net1) しかありません。個々の変数/ノードを呼び出す方法を知っている人はいますか? 以下の BLIF 生成コードを参照してください。ありがとう!