Некоторые возможности средств разработки



Библиотека предоставляет большое количество всевозможных классов, предназначенных для повышения уровня процесса разработки.

Мышь

В библиотеке реализована модульная структура собственных классов предназначенных для обработки событий мыши. Благодаря чему возможно осуществление базовых операций над графами, а именно работы в режимах:

§ Редактирования (Editing), позволяющим добавлять и удалять новые ребра и вершины.

§ Переноса (Picking), позволяющим изменять положение вершины или группы вершин.

§ Преобразования (Transforming), в котором возможно применение преобразований ко всему графу целиком, в частности – вращение, растяжение вдоль оси и параллельный перенос.

UserData

Кроме того, поддерживает механизм присоединения свойств к объектам графа (UserData), позволяя тем самым уменьшить количество собственных классов, необходимых для реализации поставленной задачи. Свойства сохраняются в формате (ключ, значение) и в дальнейшем могут быть считаны, изменены или удалены.

Структурированная работа с объектами

JUNG включает в себя некоторое количество удобных классов, которые представляют собой пример реализации структурированной работы с объектами графа. Они реализованы в рамках пакета graph.decorators. Например:

§ Класс Indexer содержит методы, позволяющие создавать отображения между вершинами графа и целыми числами {0, 1, ... n-1}, где n – количество вершин в графе. Это позволяет работать с множествами вершин как с упорядоченными массивами.

 

§ Класс StringLabeller позволяет “прикреплять” к вершинам строковые метки к вершинам графа.

 

Предикаты

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

 

Алгоритмы

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

§ Операции над Графом/Матрицей

Матрицы являются одним из наиболее распространенных представлений графовых данных. GraphMatrixOperations состоит из двух классов операций: первый непосредственно реализует операции над матрицами, а второй класс представляет собой операции, включенные в CERN Colt package для вычислительных операций над матрицами.

  • Кластеризация

Кластером является совокупность объектов, имеющих некоторое сходство между собой. В графах под сходство часто основано на топологических свойствах, таких как связанность вершин друг с другом, но может также зависеть и от свойств вершин и ребер. В библиотеке поддерживаются следующие классы:

o BicomponentClusterer: Находит все двусвязные графы в неориентированном графе g, где двусвязный граф определен как максимальный индуцированный двусвязный подграф графа g

o EdgeBetweennessClusterer: Вычисляет кластеры для графа, основанные на усредненном свойстве ребер

o WeakComponentClusterer: Находит все слабые компоненты в графе g, где под слабой компонентой понимается максимально слабосвязанный подграф графа g

  • Топология, пути и потоки

Эти алгоритмы выполняют операции над графами (и вычисляют свойства) в соответствии с их топологией (то есть набором связей между вершинами). В библиотеке поддерживаются следующие классы:

    • BFSDistanceLabeler: Помечает каждую вершину в графе длинной кратчайшего невзвешенного пути от определенной вершины в графе
    • KNeighborhoodExtractor: Возвращает подграф графа, чьи вершины разделены не более чем k ребрами от определенной вершины в графе
    • DijkstraShortestPath: Помечает каждую вершину в графе длинной кратчайшего взвешенного пути от определенной вершины в этом графе
    • UnweightedShortestPath: Вычисляет кратчайший путь для невзвешенного графа

§ Значимости

Некоторые из алгоритмов предназначены для работы с Марковскими сетями: направленными графами с весами, в которых вершины представляют собой состояния, ребра представляют возможные переходы из одного состояния в другое, а веса ребер – вероятности такого перехода. Вероятность сопоставленная вершине v в такой сети есть конечная вероятность что оно окажется текущим.

o BetweennessCentrality: Помечает каждую вершину и ребро в графе количеством кратчайших путей, проходящих через них.DegreeDistributionRanker: Помечает каждую вершину в соответствии с ее степенью.

    • PageRank: Помечает каждую вершину в модифицированной Марковской сети в соответствии со статической вероятностью.
    • PageRankWithPriors: Помечает каждую вершину в модифицированной Марковской сети в соответствии со статической вероятностью, в зависимости от указанного набора корневых вершин.
    • HITS: Помечает каждую вершину в графе в соответствии с "hubs-and-authorities".
    • HITSWithPriors: Помечает каждую вершину в графе в соответствии с "hubs-and-authorities", в зависимости от указанного набора корневых вершин.
    • KStepMarkov: Помечает каждую вершину в соответствии с быстрой аппроксимацией алгоритма PageRankWithPriors.
    • WeightedNIPaths: Помечает каждую вершину в графе в соответствии с номером и длиной непересекающихся путей, заканчивающихся на вершине соответствующей определенному набору корневых вершин.

§ Статистики


Дата добавления: 2018-04-04; просмотров: 402; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!