ভাল জাভা গ্রাফ আলগোরিদিম লাইব্রেরি? [বন্ধ]


237

গ্রাফ অ্যালগরিদমের জন্য যে কোনও জাভা লাইব্রেরির সাথে কারও ভাল অভিজ্ঞতা রয়েছে। আমি জেগ্রাফ চেষ্টা করেছি এবং এটি ঠিক পেয়েছি, এবং গুগলে বিভিন্ন রকম রয়েছে। এমন কোনও কি আছে যা লোকেরা প্রকৃতপক্ষে উত্পাদন কোডে সফলভাবে ব্যবহার করছে বা প্রস্তাব দিবে?

স্পষ্ট করে বলার জন্য, আমি এমন গ্রন্থাগারের সন্ধান করছি না যা গ্রাফ / চার্ট তৈরি করে, আমি গ্রাফ অ্যালগরিদম, যেমন ন্যূনতম বিস্তৃত বৃক্ষ, ক্রস্কালের অ্যালগোরিদম নোডস, এজ ইত্যাদিতে সহায়তা করে এমন একটি সন্ধান করছি some একটি দুর্দান্ত জাভা ওও এপিআইয়ের কাঠামো।

উত্তর:


108

আপনি যদি জেগ্রাফ ব্যবহার করছিলেন তবে আপনার জেগ্রাফটিকে চেষ্টা করা উচিত যা অ্যালগরিদমের জন্য ডিজাইন করা হয়েছে। এর বৈশিষ্ট্যগুলির মধ্যে একটি হ'ল জেগ্রাফ লাইব্রেরি ব্যবহার করে ভিজ্যুয়ালাইজেশন। এটি এখনও বিকাশযুক্ত, তবে বেশ স্থিতিশীল। আমি কিছুদিন আগে জেগ্রাফ্ট অ্যালগরিদমের জটিলতা বিশ্লেষণ করেছি। তাদের মধ্যে কয়েকটি দ্রুত নয়, তবে আপনি যদি এটি নিজেরাই প্রয়োগ করতে চলেছেন এবং আপনার গ্রাফটি প্রদর্শনের প্রয়োজন হয়, তবে এটি সেরা পছন্দ হতে পারে। আমি সত্যিই এর এপিআইটি ব্যবহার করতে পছন্দ করেছি, যখন আমাকে দ্রুত একটি অ্যাপ্লিকেশন লিখতে হয়েছিল যা গ্রাফটিতে কাজ করে এবং পরে প্রদর্শিত হয়।


জেগ্রাফের কাছে এখন একটি বিশ্লেষণ প্যাকেজ রয়েছে যার মধ্যে রয়েছে বিস্তৃত বিশ্লেষণ কার্যাদি, jgraph.github.com/mxراف / java / docs / index.html
ডেভিড

63

সারসংক্ষেপ:


এর মধ্যে অনেকগুলিই অত্যন্ত জটিল ... কারখানার পদ্ধতিগুলি ব্যবহার করে এবং আরও অনেক কিছু। একটি সাক্ষাত্কারের জন্য প্রস্তুত করার জন্য আমার কেবল সাধারণ কিছু দরকার। কোন ধারনা?
সফটওয়্যারসভ্যান্ট

4
এগুলি যদি আপনি কী ধরণের চাকরির চেয়ে জটিল হন
মায়থম - ɯɐɥʇʎɐɯ

1
গ্রাফ অ্যালগরিদমগুলি এখানে geeksforgeeks.org/ographic-data-st संरचना- এবং- সহজ কোড সহ অ্যালগরিদমগুলি ব্যাখ্যা করা হয়েছে
মোশ

40

পরীক্ষা করে দেখুন JGraphT হয় যে বেশ ভাল কাজ করেছেন একটি খুব সহজ এবং শক্তিশালী জাভা গ্রাফ লাইব্রেরির জন্য এবং, কোনো ধরনের বিভ্রান্তির দূর করার, JGraph থেকে ভিন্ন । কিছু নমুনা কোড :

UndirectedGraph<String, DefaultEdge> g =
        new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);

    String v1 = "v1";
    String v2 = "v2";
    String v3 = "v3";
    String v4 = "v4";

    // add the vertices
    g.addVertex(v1);
    g.addVertex(v2);
    g.addVertex(v3);
    g.addVertex(v4);

    // add edges to create a circuit
    g.addEdge(v1, v2);
    g.addEdge(v2, v3);
    g.addEdge(v3, v4);
    g.addEdge(v4, v1);

এটি এখানে একটি দুর্দান্ত ডেমো github.com/jographict/jographict/wiki/ নির্দেশিত গ্রাফডেমো
কেউ কোথাও

37

JUNG ভিজ্যুয়ালাইজেশনের জন্য একটি ভাল বিকল্প, এবং এলোমেলো গ্রাফ তৈরি, পুনর্নির্মাণ ইত্যাদির জন্য বিভিন্ন বিভিন্ন পদ্ধতি সহ উপলব্ধ গ্রাফ অ্যালগরিদমগুলির একটি মোটামুটি ভাল সেটও রয়েছে I've ।


প্যাকেজগুলি hep.aida। * হলেন LGPL ( acs.lbl.gov/software/colt/license.html )। এটি কোল্টের মাধ্যমে আমদানি করা হয় ( jung.sourceforge.net/download.html )। এটি এএসএফ এবং ইএসএফের ছত্রছায়ায় প্রকল্পগুলিতে জুনইউজি ব্যবহার করতে বাধা দেয়। হতে পারে যে কেউ গিথুব কাঁটাচামচ github.com/rortian/jung2 ব্যবহার করা উচিত এবং সেই নির্ভরতা অপসারণ করা উচিত । github.com/rortian/jung2/commit/… শেষ সিভিএস প্রতিশ্রুতিটি মিরর করছে। বর্তমান প্রতিশ্রুতিগুলি ভিজ্যুয়ালাইজেশন কার্যকারিতা সরিয়ে ফেলবে বলে মনে হচ্ছে।
কোপ্পোর

২০১০ সালের পরে কোনও মুক্তি নেই, আমি মনে করি যে এই প্রকল্পটি পরিত্যাগ করা হয়েছে
ইয়াছিনো

14

অ্যাপাচি কমন্স কমন্স-গ্রাফ সরবরাহ করেHttp://svn.apache.org/viewvc/commons/sandbox/ographic/trunk/ এর অধীনে কেউ উত্সটি পরিদর্শন করতে পারেন। নমুনা এপিআই ব্যবহার এসভিএন-তেও রয়েছে । দেখুন https://issues.apache.org/jira/browse/SANDBOX-458 বাস্তবায়িত আলগোরিদিম একটি তালিকার জন্য, এছাড়াও জং, GraphT, Prefuse, সঙ্গে তুলনা jBPT

গুগল পেয়ারা যদি আপনার কেবলমাত্র ভাল ডেটাস্ট্রাকচারের প্রয়োজন হয়।

জেগ্রাফ্ট একটি গ্রাফ লাইব্রেরি যেখানে অনেক অ্যালগরিদম প্রয়োগ করা হয় এবং (আমার বিপরীতে) একটি ভাল গ্রাফ মডেল রয়েছে। হেলিওরল্ড উদাহরণ । লাইসেন্স: এলজিপিএল + ইপিএল।

জেএনজি 2 হ'ল বিএসডি-লাইসেন্সযুক্ত লাইব্রেরি যা জেগ্রাফটির মতো ডেটা কাঠামোযুক্ত। এটি লেআউটিং অ্যালগরিদমগুলি সরবরাহ করে, যা বর্তমানে জেগ্রাফটিতে অনুপস্থিত। সর্বাধিক সাম্প্রতিক প্রতিশ্রুতিটি ২০১০ সালের এবং প্যাকেজগুলি হ'ল hep.aida.*এলজিপিএল ( কোল্ট লাইব্রেরির মাধ্যমে , যা জুনজি দ্বারা আমদানি করা হয় )। এটি এএসএফ এবং ইএসএফের ছত্রছায়ায় প্রকল্পগুলিতে জুনইউজি ব্যবহার করতে বাধা দেয়। হতে পারে কারও কাছে গিথব কাঁটাচামচ ব্যবহার করা উচিত এবং সেই নির্ভরতা সরিয়ে নেওয়া উচিত । কমিট f4ca0cd সর্বশেষ সিভিএস প্রতিশ্রুতি মিরর করছে। বর্তমান প্রতিশ্রুতিগুলি ভিজ্যুয়ালাইজেশন কার্যকারিতা সরিয়ে ফেলবে বলে মনে হচ্ছে। কমিট d0fb491c যুক্ত করে a .gitignore

প্রিফিউস একটি ম্যাট্রিক্স কাঠামো ব্যবহার করে গ্রাফগুলি সঞ্চয় করে, যা বিরল গ্রাফের জন্য মেমরির দক্ষ নয়। লাইসেন্স: বিএসডি

অ্যাকলিপ্স জেস্ট গ্রাফ লেআউট অ্যালগরিদমগুলিতে তৈরি করেছে, যা এসডাব্লুটি-র স্বাধীনভাবে ব্যবহার করা যেতে পারে। Org.eclipse.zest.layouts.algorithms দেখুন । ব্যবহৃত গ্রাফ কাঠামো হ'ল এক্লিপস ড্র 2 এর মধ্যে একটি , যেখানে নোডগুলি স্পষ্ট বস্তু এবং জেনেরিক্সের মাধ্যমে ইনজেকশনের নয় (যেমন এটি অ্যাপাচি কমন্স গ্রাফ, জেগ্রাফ্ট এবং জেএনজি 2 তে ঘটে)।


12

http://neo4j.org/ একটি গ্রাফ ডাটাবেস যা বেশিরভাগ ইন-মেমরি লাইব্রেরির চেয়ে গ্রাফ অ্যালগরিদম এবং স্কেলগুলিকে ধারণ করে।


1
এমন কোনও নিও 4 জে ক্লায়েন্ট (জাভা ক্লায়েন্ট) আছে যেখানে আপনি এটি কল্পনা করতে পারেন?
বিশ্রাট

10

একটি ইউনিভার্সিটির প্রকল্পে আমি yWorks দ্বারা yFiles নিয়ে বেড়াতে পেরেছি এবং এটির বেশ ভাল এপিআই পেয়েছি।


আমি ডেটা আইটেমগুলির মধ্যে আন্তঃনির্ভরতা দেখার জন্য yFiles ব্যবহার করেছি (একটি বাণিজ্যিক সফটওয়্যার প্ল্যাটফর্মের অংশ হিসাবে)। আমি আসলে কোনও গ্রাফ বিশ্লেষণ অ্যালগরিদম ব্যবহার করি নি, তবে y.algo প্যাকেজে আপনার যা প্রয়োজন আছে তা পরীক্ষা করুন: yworks.com/products/yfiles/doc/api
জোনিক

2
yFiles ওপেনসোর্স নয়, তবে বাণিজ্যিক লাইসেন্স দেয়
কোপ্পোর

9

খুঁজে বার করো খেয়াল :

ব্লুপ্রিন্টগুলি সম্পত্তি গ্রাফ ডেটা মডেলের জন্য ইন্টারফেস, বাস্তবায়ন, ওপলমেন্টেশন এবং পরীক্ষার স্যুটগুলির একটি সংগ্রহ। ব্লুপ্রিন্টগুলি জেডিবিসির সাথে সমান, তবে গ্রাফ ডাটাবেসের জন্য। টিঙ্কারপপ ওপেন সোর্স সফ্টওয়্যার স্ট্যাকের মধ্যে, ব্লুপ্রিন্টগুলি এর জন্য মূল প্রযুক্তি হিসাবে কাজ করে:

পাইপস : একটি অলস, ডেটা প্রবাহ কাঠামো

গ্রিমলিন : একটি গ্রাফ ট্র্যাভার্সাল ভাষা

ফ্রেম : একটি বস্তু থেকে গ্রাফ ম্যাপার

চুল্লি : একটি গ্রাফ অ্যালগরিদম প্যাকেজ

রেক্সস্টার : একটি গ্রাফ সার্ভার



7

জেডিএসএল (জাভাতে ডেটা স্ট্রাকচার লাইব্রেরি) আপনার গ্রাফ অ্যালগরিদমে থাকলে ভাল হতে হবে - http://www.cs.brown.edu/cgc/jdsl/


এর জন্য ধন্যবাদ, আমি কখনই এটি পেরেছি না। আপনি এটি ব্যবহার করছেন?
নিক ফরটসেকু

1
হ্যাঁ, আমি এটি ব্যবহার করছি। আমি সম্ভবত 4 বছর আগে এটি ব্যবহার শুরু করেছি। এতদূর ভাল, আমি কেবল চাই নেট। এর জন্যও এর কোনও বন্দর ছিল।
mrsverrir

দুঃখের বিষয়, jdsl.org পৃষ্ঠাটি এখন একটি স্প্যাম পৃষ্ঠা বলে মনে হচ্ছে।
রস জডসন

1
আমি মূল পোস্টে লিঙ্কটি আপডেট করেছি। ধন্যবাদ।
mrsverrir

5

ভিজ্যুয়ালাইজেশনের জন্য আমাদের গ্রুপটির প্রিফিউজ সহ কিছুটা সাফল্য ছিল । আমরা এটি আর্কিটেকচারাল মেঝে এবং বুদ্বুদ ডায়াগ্রাম পরিচালনা করতে প্রসারিত করেছি এবং এটি খুব বেশি অভিযোগ করেনি। তাদের কাছে একটি নতুন ফ্লেক্স টুলকিট রয়েছে যা খুব শিথিল একটি এপিআই ব্যবহার করে Fla

আপডেট: আমাকে মন্তব্যটির সাথে একমত হতে হবে, আমরা প্রচুর কাস্টম কার্যকারিতা লিখে / প্রিফিউজ সীমাবদ্ধতার আশেপাশে কাজ করেছি। আমি বলতে পারি না যে স্ক্র্যাচ থেকে শুরু করা আরও ভাল হত যদিও আমরা প্রিফিউজ ব্যবহার করে প্রথম দিন থেকে অগ্রগতি প্রদর্শন করতে সক্ষম হয়েছি। অন্যদিকে আমরা যদি একই জিনিসগুলির দ্বিতীয় বাস্তবায়ন করছিলাম তবে আমি প্রিফিউজটি এড়িয়ে যাব কারণ আমরা প্রয়োজনীয়তাগুলি আরও অনেক ভাল বুঝতে পারি।


প্রিফিউজ সহ আপনার ব্যক্তিগত চিন্তা কি ছিল? আমার শেষ কাজটিতে, একটি প্রকল্প এটি ব্যবহার শুরু করেছিল, তবে প্রিফিউজের সংস্করণটি একটি 90% + রচনা (এবং নতুন বৈশিষ্ট্য সংযোজন সহ অনুকূলিত) দিয়ে শেষ হয়েছিল।
টমাস ওপেনস


5

এটি নিশ্চিত হওয়াও ভাল যে কোনও গ্রাফকে যেমন সহজভাবে উপস্থাপন করা যায়:

class Node {
   int value;
   List<Node> adj;
}

এবং বেশিরভাগ অ্যালগরিদমগুলি নিজের দ্বারা আকর্ষণীয় মনে করে তা প্রয়োগ করে। যদি আপনি গ্রাফগুলিতে কিছু অনুশীলন / শেখার সেশনের মাঝামাঝি এই প্রশ্নটিতে পড়ে থাকেন তবে এটি বিবেচনার জন্য সবচেয়ে ভাল কাজ। ;)

আপনি বেশিরভাগ সাধারণ অ্যালগরিদমের জন্য সংলগ্ন ম্যাট্রিক্সকেও পছন্দ করতে পারেন:

class SparseGraph {
  int[] nodeValues;
  List<Integer>[] edges;     
}

বা কিছু ক্রিয়াকলাপের জন্য একটি ম্যাট্রিক্স:

class DenseGraph {
  int[] nodeValues;
  int[][] edges;     
}


4

আপনার যদি পারফরম্যান্সের প্রয়োজন হয় তবে আপনি গ্রাফটি একবার দেখে নিতে পারেন। গ্রন্থাগারটি ফরাসি বিশ্ববিদ্যালয় এবং সিএনআরএস / ইনরিয়ায় তৈরি করা হয়েছে।

http://www.i3s.unice.fr/~hogie/grph/

প্রকল্পটি সক্রিয় এবং প্রতিক্রিয়াশীল সমর্থন সরবরাহ করা হয়!


3

জাভাতে শিক্ষামূলক গ্রাফ অ্যালগরিদম বাস্তবায়নগুলি এখানে পাওয়া যাবে (অধ্যাপক সেডজউইক এ্যাট আল দ্বারা): http://algs4.cs.princeton.edu/code/

কোর্সায় এই ব্যতিক্রমী অ্যালগরিদম কোর্সে অংশ নেওয়ার সময় আমি তাদের সাথে পরিচয় করিয়েছি (অধ্যাপক সেডজউইকও শিখিয়েছিলেন):

https://www.coursera.org/course/algs4partI

https://www.coursera.org/course/algs4partII


0

আপনি যদি আসলে চার্টিং গ্রন্থাগারগুলি সন্ধান করছেন এবং নোড / এজ গ্রাফ লাইব্রেরিগুলির জন্য নয় তবে আমি বিগ ফেসলেস গ্রাফ লাইব্রেরিতে ( বিএফজি ) স্ফীত হওয়ার পরামর্শ দেব would এটি জেফ্রিচার্টের চেয়ে সহজভাবে ব্যবহার করার উপায়, আরও সুন্দর দেখায়, দ্রুত চালায়, আরও আউটপুট বিকল্প রয়েছে, আসলে কোনও তুলনা নেই।


আপনি প্রশ্নটি ভুল বুঝেছেন: এটি গ্রাফগুলির নোড এবং প্রান্তগুলি সম্পর্কিত, পাই এবং বারগুলির মতো নয়।
মিলিয়ন

-1

জেগ্রাফ http://mmengineer.blogspot.com/2009/10/java- راف-floyd-class.html থেকে

গ্রাফের সাথে কাজ করার জন্য একটি পাওয়ারফুল সফটওয়্যার সরবরাহ করে (প্রত্যক্ষ বা অপ্রত্যক্ষ)। গ্রাফিক্স কোডও উত্পন্ন করে, আপনি গ্রাফিক্স উপস্থাপনা দেখতে পারেন। আপনি নিজের কোড অ্যালগরিদমকে পকেজে রাখতে পারেন, উদাহরণস্বরূপ: ব্যাকট্র্যাকিং কোড। প্যাকেজটি কিছু অ্যালগোরিদম সরবরাহ করে: ডিজকস্ট্রা, ব্যাকট্র্যাকিং মিনিমুন পাথ ব্যয়, ect ..

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.