グラフを表すデータ構造 JAVA での実装

Similar documents
Androidプログラミング 2 回目 迫紀徳

/** Creates new form NewJFrame */ public NewJFrame() { initcomponents(); initblogsearch(); //initializes Index List box }

本書について... 7 本文中の表記について... 7 マークについて... 7 MTCE をインストールする前に... 7 ご注意... 7 推奨 PC 仕様... 8 MTCE をインストールする... 9 MTCE をアンインストールする... 11

Private Sub 終了 XToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 終了 XToolStripMenuItem.

URL IO オブジェクト指向プログラミング特論 2018 年度只木進一 : 工学系研究科

Cloud Connector 徹底解説. 多様な基盤への展開を可能にするための Citrix Cloud のキーコンポーネント A-5 セールスエンジニアリング本部パートナー SE 部リードシステムズエンジニア. 哲司 (Satoshi Komiyama) Citrix

電脳梁山泊烏賊塾 構造体のサイズ. Visual Basic

今日の予定 1. 展開図の基礎的な知識 1. 正多面体の共通の展開図. 2. 複数の箱が折れる共通の展開図 :2 時間目 3. Rep-Cube: 最新の話題 4. 正多面体に近い立体と正 4 面体の共通の展開図 5. ペタル型の紙で折るピラミッド型 :2 時間目 ~3 時間目

2007/10/17 ソフトウェア基礎課題布広. /** * SOFT * AppletTest01.java * 文字表示 */

Lecture 4 Branch & cut algorithm

フラクタル 1 ( ジュリア集合 ) 解説 : ジュリア集合 ( 自己平方フラクタル ) 入力パラメータの例 ( 小さな数値の変化で模様が大きく変化します. Ar や Ai の数値を少しずつ変化させて描画する. ) プログラムコード. 2010, AGU, M.

Yamaha Steinberg USB Driver V for Windows Release Notes

Unofficial Redmine Cooking - QA #782 yaml_db を使った DB のマイグレーションで失敗する

サーブレットと Android との連携. Generated by Foxit PDF Creator Foxit Software For evaluation only.

楽天株式会社楽天技術研究所 Autumn The Seasar Foundation and the others all rights reserved.

Yamaha Steinberg USB Driver V for Mac Release Notes

Computer Programming I (Advanced)

2. 集団の注目位置推定 提案手法では 複数の人物が同一の対象を注視している状況 置 を推定する手法を検討する この状況下では 図 1 のよう. 顔画像からそれぞれの注目位置を推定する ただし f は 1 枚 この仮説に基づいて 複数の人物を同時に撮影した低解像度顔

PSLT Adobe Typekit Service (2016v1.1)

API サーバの URL. <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE COMPLIANCE_SCAN SYSTEM "

JR SHIKOKU_Wi Fi Connection Guide

* To change this license header, choose License Headers in Project Properties.

Methods to Detect Malicious MS Document File using File Structure Inspection

アルゴリズムの設計と解析 (W4022) 教授 : 黄潤和 広野史明 (A4/A8)

Quick Install Guide. Adaptec SCSI RAID 2120S Controller

4. 今回のプログラム 4.2 解決のクラス SearchNumber.java

PCIe SSD PACC EP P3700 Intel Solid-State Drive Data Center Tool

JASCO-HPLC Operating Manual. (Analytical HPLC)

MySQL Cluster 7.3 リリース記念!! 5 分で作る MySQL Cluster 環境

J の Lab システムの舞台裏 - パワーポイントはいらない -

Java Programming Summer 2008 LAB. Thursday 8/21/2008

Yamaha Steinberg USB Driver V for Windows Release Notes

MathWorks Products and Prices Japan September 2016

Video Annotation and Retrieval Using Vague Shot Intervals

Kazunari Okada( 岡田一成 ) Sr. Technical Marketing Manager ISO Vibration Analyst (CAT II) National Instruments Corporation Japan

此処 夏? プログラムの概要 VB マウストレーニングソフト 此処 夏? で有る 無人島に取り残された女の子を マウスでドラッグして浅瀬を通り 椰子の島に導いて行く 一般的に 実用プログラムに比較するとゲームプログラムは 高度なテクニックを要求される事が多い

UML. A Model Trasformation Environment for Embedded Control Software Design with Simulink Models and UML Models

A note on quaternion, applied to attitude estimation Minoru HIGASHIGUCHI 四元数について衛星姿勢の逐次推定への応用例

Online Meetings with Zoom

Answer on question #61311, Programming & Computer Science / Java

A. 展開図とそこから折れる凸立体の研究 1. 複数の箱が折れる共通の展開図 2 通りの箱が折れる共通の展開図 3 通りの箱が折れる共通の展開図そして. 残された未解決問題たち 2. 正多面体の共通の展開図 3. 正多面体に近い立体と正 4 面体の共通の展開図 ( 予備 )

Studies of Large-Scale Data Visualization: EXTRAWING and Visual Data Mining

振込依頼書記入要領 Entry Guide for Direct Deposit Request Form

~ ソフトウエア認証への取り組みと課題 ~

Googleの強みは ささえるのは世界一のインフラ. Google File System 2008年度後期 情報システム構成論2 第10回 クラウドと協調フィルタリング. 初期(1999年)の Googleクラスタ. 最近のデータセンタ Google Chrome Comicより

Zabbix ログ解析方法. 2018/2/14 サイバートラスト株式会社 Linux/OSS 事業部技術統括部花島タケシ. Copyright Cybertrust Japan Co., Ltd. All rights reserved.

* To change this license header, choose License Headers in Project Properties.

Mobile Robot Control Interface Using Augmented Free-viewpoint Image Generation

携帯電話の 吸収率 (SAR) について / Specific Absorption Rate (SAR) of Mobile Phones

BABr11.5 for Linux のインストール 2007/12/21. You are running Linux on Kernel smp. Analyzing the environment

ご注意. (4) 運用した結果の影響につきましては (4) の項に関わらず責任を負いかねますのでご了承ください (5) Autodesk Device Interface(ADI) および Heidi Device Interface(HDI) ドライバは 周辺機器メーカーに対応しています

Vehicle Calibration Techniques Established and Substantiated for Motorcycles

携帯電話の 吸収率 (SAR) について / Specific Absorption Rate (SAR) of Mobile Phones

HPE Insight Control サーバープロビジョニング 7.6 ビルドプランリファレンスガイド

TOOLS for MR V1.7.7 for Mac Release Notes

UB-U01III/U02III/U03II User s Manual

PRODUCT DESCRIPTIONS AND METRICS

IRS16: 4 byte ASN. Version: 1.0 Date: April 22, 2008 Cisco Systems 2008 Cisco, Inc. All rights reserved. Cisco Systems Japan

BraindumpStudy. BraindumpStudy Exam Dumps, High Pass Rate!

The Yomiuri Shinbun. I. Starting the Yomiuri Shinbun. II. Copyright display window

Operational Precaution

Unified System Management Technology for Data Centres

Certificate of Accreditation

Rechargeable LED Work Light

NI TB Introduction. Conventions INSTALLATION INSTRUCTIONS Wire Terminal Block for the NI PXI-2529

TECHNICAL DOCUMENTATION

Relaxed Consistency models and software distributed memory. Computer Architecture Textbook pp.79-83

The Secret Life of Components

Web 成績登録システム利用の手引き ( 改訂版 )

Centralized (Indirect) switching networks. Computer Architecture AMANO, Hideharu

Synchronization with shared memory. AMANO, Hideharu Textbook pp.60-68

Introduction to Information and Communication Technology (a)

DürrConnect the clever connection. The quick connection with the Click

Snoop cache. AMANO, Hideharu, Keio University Textbook pp.40-60

Proposed Architecture for Asynchronous Web Services in JAX-RPC 2.0

ユーザー入力およびユーザーに 出力処理入門. Ivan Tanev

和英対訳版. IEC Standard Template のユーザーガイド 備考 : 英語原文掲載 URL ( 一財 ) 日本規格協会

TestsDumps. Latest Test Dumps for IT Exam Certification


Autodesk Maya 2013 Extension ( 拡張機能 )

Infragistics ASP.NET リリースノート

サンプル. NI TestStand TM I: Introduction Course Manual

暗い Lena トーンマッピング とは? 明るい Lena. 元の Lena. tone mapped. image. original. image. tone mapped. tone mapped image. image. original image. original.

Manual for Editing and Publishing of Faculty Profile

Invitrogen Custom Primer Ordering Guide

L3 SSG/SSD を使用している PPPoA クライアントで PC を設定すること

Chapter 1 Videos Lesson 61 Thrillers are scary ~Reading~

DSK8AD1DA. 8ch A/D & 1ch D/A for DSK/EVM.

JTC 1 における IoT 関連の標準化動向と 日本の取組み

ポータブルメディア機器向けプロセッサ フォトフレーム向けメディアプロセッサ

マルチビットアップセット耐性及びシングルビットアップセット耐性を備えた

Structured Report Implement rev2.1. Konica Minolta Medical & Graphic Inc. R&D Center Software Development Division Hiroyuki KUBOTA 2006/7/20

Co-StandbyServer. AAdvanced. リリース 5.1 Microsoft Windows 版 ユーザーズ ガイド

Peering 101. August 2017 TPF. Walt Wollny, Director Interconnection Strategy Hurricane Electric AS6939

HA8000V シリーズ. Service Pack for HA8000V (SPH) Version Readme. All Rights Reserved. Copyright (c) 2018 Hitachi, Ltd.

Application Note Ref No: an2k-050 Last Modify Raspberry Pi を使ってネットワークから MPC をみる 使用機器 MPC-2000 シリーズ, USB-RS,Raspberry Pi2

Quick Installation Manual

BraindumpQuiz. Best exam materials provider - BraindumpQuiz! Choosing us, Benefit more!

DATASHEET. Grablink Express

Agilent. IO Libraries Suite 16.3/16.2 簡易取扱説明書. [ IO Libraries Suite 最新版 ]

Transcription:

グラフを表すデータ構造 JAVA での実装

グラフの構造を記述するクラス パッケージgraphLib graphlib.graph グラフ全体 graphlib.vertex 頂点 頂点を始点とする弧 頂点を2 次元面に表示するための座標 graphlib.arc 弧の始点と終点

クラスの関係 グラフ 弧一覧 弧 弧 頂点 弧 頂点一覧 頂点 頂点 写像 + 頂点 写像 頂点 写像 δ +

GRAPH クラス : フィールド /** グラフのラベル */ protected String name = null; /** 頂点の一覧 */ protected List<Vertex> vertexes = null; /** 弧の一覧 */ protected List<Arc> arcs = null; /** 有向グラフであるか */ protected boolean directed = true; /** 弧からその始点への写像 */ protected HashMap<Arc, Vertex> a2vhead = null; /** 弧からその終点への写像 */ protected HashMap<Arc, Vertex> a2vtail = null; + /** 頂点を始点とする弧のリスト */ protected HashMap<Vertex, List<Arc>> v2a = null; δ + /** 隣接行列 */ protected int adjacent[][] = null; /** 二つの頂点の間に道があるかの有無 */ protected boolean connectedness[][] = null; private HashMap<Vertex, Vertex> map = null; private HashMap<Arc, Arc> amap = null;

GRAPH クラス : 主要メソッド public Graph(String name) コンストラクタ public Graph(final Graph graph) コピーコンストラクタ public Vertex addvertex(string name) 頂点追加 public void addvertex(vertex v) 頂点追加 public Arc addarc(string fromname, String toname, String name) 弧追加 public Arc addarc(vertex from, Vertex to, String name) 弧追加 public void setdirected(boolean b) 有向 無向を設定 public List<Vertex> getvertexes() 頂点一覧を取得 public List<Arc> getarcs() 弧一覧を取得 public List<Arc> getarcs(vertex v) 指定した頂点を視点とする弧の一覧 public Vertex gethead(arc a) 指定した弧の始点 public Vertex gettail(arc a) 指定した弧の終点

VERTEX クラス : フィールド /** 頂点のラベル */ private String name; /** 頂点の位置座標 */ private Point2D.Double point = null;

VERTEX クラス : 主要メソッド public Vertex(String name) コンストラクタ public Point2D.Double getpoint() 頂点の座標を取得 public void setpoint(point2d.double p) 頂点の座標を設定

ARC クラス : フィールド /** 弧のラベル */ private String name; /** 弧の重み */ private double weight; private boolean namewithweight = false; /** 弧を流れる流量 */ private double flow; private boolean namewithflow = false;

グラフの定義 graphlib.graph を拡張 public class Graph0 extends Graph { public Graph0(String name) { super(name); int n = 6; // 頂点の生成 graphlib.vertex vlist[] = new graphlib.vertex[n]; for (int i = 0; i < n; i++) { vlist[i] = new graphlib.vertex(string.valueof(i)); addvertex(vlist[i]); // 頂点の表示座標を設定 double d = 100.; vlist[0].setpoint(d, d);. int k = 0; addarc(vlist[0], vlist[1], String.valueOf(k)); k++; addarc(vlist[0], vlist[1], String.valueOf(k)); k++;

グラフ表示のメインプログラム /** * 表示の開始 * @param evt 表示開始のボタンイベント */ private void drawactionperformed(java.awt.event.actionevent evt) { graphexample0 = new graphsamples.graph0(title); /** グラフの定義 */ panel.setgraph(graphexample0); /** グラフをパネルに設定 */ panel.mkimage(); /** 作図イメージ生成 */ settitle(graphexample0.tostring()); /** タイトル設定 */ repaint(); /** 全体再描画 */

Graph0.java package example0; import graphlib.*; /** * * @author tadaki */ public class Graph0 extends Graph { public Graph0(String name) { super(name); int n = 6; // 頂点の生成 graphlib.vertex vlist[] = new graphlib.vertex[n]; for (int i = 0; i < n; i++) { vlist[i] = new graphlib.vertex(string.valueof(i)); addvertex(vlist[i]); // 頂点の表示座標を設定 double d = 100.; vlist[0].setpoint(d, d); vlist[1].setpoint(d, 3 * d); vlist[2].setpoint(2 * d, 2 * d); vlist[3].setpoint(3 * d, d); vlist[4].setpoint(3 * d, 3 * d); vlist[5].setpoint(4 * d, 2 * d); // 弧の定義 int k = 0; addarc(vlist[0], vlist[1], String.valueOf(k)); k++; addarc(vlist[0], vlist[1], String.valueOf(k)); k++; addarc(vlist[0], vlist[2], String.valueOf(k)); k++; addarc(vlist[0], vlist[3], String.valueOf(k)); k++; addarc(vlist[1], vlist[2], String.valueOf(k)); k++; addarc(vlist[1], vlist[4], String.valueOf(k)); k++; addarc(vlist[2], vlist[3], String.valueOf(k)); k++; addarc(vlist[3], vlist[4], String.valueOf(k)); k++; addarc(vlist[4], vlist[2], String.valueOf(k)); k++; addarc(vlist[4], vlist[5], String.valueOf(k)); k++; addarc(vlist[5], vlist[3], String.valueOf(k)); k++; addarc(vlist[5], vlist[5], String.valueOf(k)); 1/1 ページ

Main.java package example0; /** * 例題 * @author tadaki */ public class Main extends javax.swing.jframe { private graphlib.graph graphexample0 = null; private String title = "Example0"; /** Creates new form Main */ public Main(String title) { initcomponents(); this.title = title; /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ // <editor-fold defaultstate="collapsed" desc="generated Code">//GEN-BEGIN:initComponents private void initcomponents() { buttons = new javax.swing.jpanel(); close = new javax.swing.jbutton(); draw = new javax.swing.jbutton(); panel = new graphdraw.graphpanel(); setdefaultcloseoperation(javax.swing.windowconstants.exit_on_close); 1/3 ページ buttons.setbackground(new java.awt.color(204, 204, 255)); close.setbackground(new java.awt.color(0, 153, 204)); close.settext("close" ); close.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { closeactionperformed(evt); ); buttons.add(close);

Main.java draw.setbackground(new java.awt.color(0, 153, 204)); draw.settext("draw" ); draw.addactionlistener(new java.awt.event.actionlistener() { public void actionperformed(java.awt.event.actionevent evt) { drawactionperformed(evt); ); buttons.add(draw); getcontentpane().add(buttons, java.awt.borderlayout.north); panel.setpreferredsize(new java.awt.dimension(500, 400)); getcontentpane().add(panel, java.awt.borderlayout.center); pack(); // </editor-fold>//gen-end:initcomponents /** * 表示の開始 * @param evt 表示開始のボタンイベント */ private void drawactionperformed(java.awt.event.actionevent evt) {//GEN-FIRST:event_drawActionPerformed graphexample0 = new Graph0(title); /** グラフの定義 */ panel.setgraph(graphexample0); /** グラフをパネルに設定 */ panel.mkimage(); /** 作図イメージ生成 */ settitle(graphexample0.tostring()); /** タイトル設定 */ repaint(); /** 全体再描画 */ //GEN-LAST:event_drawActionPerformed /** * 終了 * @param evt 終了のボタンイベント */ private void closeactionperformed(java.awt.event.actionevent evt) {//GEN-FIRST:event_closeActionPerformed dispose(); //GEN-LAST:event_closeActionPerformed 2/3 ページ

Main.java /** * 開始 * @param args the command line arguments */ public static void main(string args[]) { java.awt.eventqueue.invokelater(new Runnable() { @Override public void run() { new Main("Example 0").setVisible(true ); ); // Variables declaration - do not modify//gen-begin:variables private javax.swing.jpanel buttons; private javax.swing.jbutton close; private javax.swing.jbutton draw; private graphdraw.graphpanel panel; // End of variables declaration//gen-end:variables 3/3 ページ