Глава 6. Обзор библиотеки JGraph.




Что же касается библиотеки JGraph, то она в свою очередь:

1) является swing-компонентом для построения графического интерфейса пользователя;

2) содержит более сложное API, чем JGraphT, и поэтому для ее правильного и эффективного использования необходимо изучить предоставляемую документацию;

3) производительность кода, написанного с использованием JGraph, является менее быстрой, чем JGraphT,и поэтому эта библиотека более требовательна к ресурсам.

Следующий адрес https://jgrapht.sourceforge.net/visualizations.html содержит пример работы библиотеки JGraph.

 

Рисунок 1.

 

На рисунке 1 мы видим граф на четырех вершинах v1, v2, v3, v4, содержащий ребра v1v2, v2v3, v3v1, v4v3. Этот написанный на языке Java апплет поддерживает пользовательский интерфейс типа drag and drop, благодаря чему пользователь может упорядочить вершины графа по своему усмотрению:

 

Рисунок 2

 

Ниже приведен исходный код рассмотренной выше программы на языке Java.

package org.jgrapht.demo;

 

import java.awt.Color;

import java.awt.Dimension;

import java.awt.Rectangle;

 

import java.util.HashMap;

import java.util.Map;

 

import javax.swing.JApplet;

import javax.swing.JFrame;

 

import org.jgraph.JGraph;

import org.jgraph.graph.DefaultGraphCell;

import org.jgraph.graph.GraphConstants;

 

import org.jgrapht.ListenableGraph;

import org.jgrapht.ext.JGraphModelAdapter;

import org.jgrapht.graph.ListenableDirectedGraph;

import org.jgrapht.graph.DefaultEdge;

 

public class JGraphAdapterDemo extends JApplet {

 

private static final Color DEFAULT_BG_COLOR =

Color.decode("#FAFBFF");

private static final Dimension DEFAULT_SIZE = new Dimension(530, 320);

 

//

private JGraphModelAdapter m_jgAdapter;

 

/**

* @see java.applet.Applet#init().

*/

public void init() {

// create a JGraphTgraph

ListenableGraph g = new ListenableDirectedGraph(DefaultEdge.class);

 

// create a visualization using JGraph, via an adapter

m_jgAdapter = new JGraphModelAdapter(g);

 

JGraphjgraph = new JGraph(m_jgAdapter);

 

adjustDisplaySettings(jgraph);

getContentPane().add(jgraph);

resize(DEFAULT_SIZE);

 

// add some sample data (graph manipulated via JGraphT)

g.addVertex("v1");

g.addVertex("v2");

g.addVertex("v3");

g.addVertex("v4");

 

g.addEdge("v1", "v2");

g.addEdge("v2", "v3");

g.addEdge("v3", "v1");

g.addEdge("v4", "v3");

 

// position vertices nicely within JGraphcomponent

positionVertexAt("v1", 130, 40);

positionVertexAt("v2", 60, 200);

positionVertexAt("v3", 310, 230);

positionVertexAt("v4", 380, 70);

 

// that's all there is to it!...

}

 

 

private void adjustDisplaySettings(JGraphjg) {

jg.setPreferredSize(DEFAULT_SIZE);

 

Color c = DEFAULT_BG_COLOR;

String colorStr = null;

 

try {

colorStr = getParameter("bgcolor");

}

catch(Exception e) {}

 

if(colorStr!= null) {

c = Color.decode(colorStr);

}

 

jg.setBackground(c);

}

 

 

private void positionVertexAt(Object vertex, int x, int y) {

DefaultGraphCell cell = m_jgAdapter.getVertexCell(vertex);

Map attr = cell.getAttributes();

Rectangle b = GraphConstants.getBounds(attr);

 

GraphConstants.setBounds(attr, new Rectangle(x, y, b.width, b.height));

 

Map cellAttr = new HashMap();

cellAttr.put(cell, attr);

m_jgAdapter.edit(cellAttr);

}

}

 

Заключение

Из всего выше сказанного следует, что «информационный бум» оставил свой след во многих сферах человеческой жизни. С появлением компьютерных технологий стало возможно решать такие математические задачи, за которые раньше учёные не могли даже взяться именно из-за большой вычислительной сложности таких задач. Да что и говорить, само бурное развитие теории графов во многом обязано именно появлению вычислительных машин. И наоборот, во многом благодаря теории графов стал возможен такой большой скачок в их производительности.

Как известно, немаловажным понятием теории графов является понятие алгоритма. Практическое применение алгоритмов связано именно с использованием ЭВМ.

Основной целью этой работы являлось применение информационных технологий в теории графов. И это применение, поистине, безгранично. Начиная с текстовых редакторов, редакторов изображений и заканчивая огромным количеством всевозможных библиотек в языках программирования.


 

Список литературы к реферату

1. Лекции по теории графов / В.А. Емеличев, О.И. Мельников, В.И. Сарванов, Р.И. Тышкевич. – М.; Наука, 1990. 384 c.

2. Перез-Чернов А.Х., Тышкевич Р.И. К проблеме распознавания реберных графов линейных 3-униформных гиперграфов: предбольшие клики // Труды института математики. 2007. Т.15. № 2. С 78-89.

3. Скумс П.В, Суздаль С.В., Тышкевич Р.И. О пороге полиномиальной разрешимости для задачи распознавания графов пересечений ребер линейных 3-униформных гиперграфов // Докл. НАН Беларуси. 2004. Т.48. № 4. С.29-34.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-12-18 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: