java - লগর - বিগ ও নোটেশন




ভাল জাভা গ্রাফ অ্যালগরিদম লাইব্রেরি? (12)

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

ব্যাখ্যা করার জন্য, আমি এমন লাইব্রেরির সন্ধান করছি না যা গ্রাফ / চার্ট তৈরি করে, আমি গ্রাফ অ্যালগরিদমগুলির সাহায্যে এমন একটি সন্ধান করছি, যেমন সর্বনিম্ন স্প্যানিং গাছ, ক্রস্কালের অ্যালগরিদম নোডস, এজস ইত্যাদি। আদর্শভাবে কিছু ভাল অ্যালগরিদম / ডেটা সহ একটি চমৎকার জাভা OO API এ গঠন।


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


JGraph থেকে http://mmengineer.blogspot.com/2009/10/java-graph-floyd-class.html

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


আনাসকে এটির একটি ওপেন সোর্স গ্রাফ প্যাকেজটি ব্যবহার করে দেখুন যা সহজে ধরে রাখা যায়

http://annas.googlecode.com


আপনি কর্মক্ষমতা প্রয়োজন হলে, আপনি গ্রাফ একটি চেহারা নিতে পারে। লাইব্রেরী ফ্রেঞ্চ ইউনিভার্সিটি এবং সিএনআরএস / ইনরিয়ায় বিকশিত হয়।

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

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


আপনি যদি প্রকৃতপক্ষে চার্টিং লাইব্রেরির সন্ধান করেন তবে নোড / এজ গ্রাফ লাইব্রেরির জন্য নয় তবে আমি বিগ ফ্যাকলেফ গ্রাফ লাইব্রেরির ( BFG ) BFG পরামর্শ দেব। JFreeChart এর চেয়ে এটি ব্যবহার করা সহজ উপায়, নিকার দেখায়, দ্রুত সঞ্চালিত হয়, আরো আউটপুট বিকল্প থাকে, সত্যিই কোন তুলনা নেই।


আমি জানি না, আমি উত্পাদন প্রস্তুত কিনা বলি, কিন্তু jGABL


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

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

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

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

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

অথবা কিছু অপারেশন জন্য একটি ম্যাট্রিক্স:

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

কল্পনা জন্য আমাদের গ্রুপ prefuse সঙ্গে কিছু সাফল্য ছিল। আমরা এটি স্থাপত্য প্রসারিত এবং বুদ্বুদ অঙ্কন হ্যান্ডেল প্রসারিত, এবং এটি খুব বেশি অভিযোগ করেনি। তাদের একটি নতুন ফ্লেক্স টুলকিট রয়েছে যা ফ্ল্যাশ নামে পরিচিত যা খুব অনুরূপ API ব্যবহার করে।

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


জাভা নির্দেশক গ্রাফ আলগোরিদিম বাস্তবায়ন এখানে পাওয়া যাবে (Prof. Sedgewick et al। দ্বারা): http://algs4.cs.princeton.edu/code/

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

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

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


সারাংশ:

  • JGraphT আপনি তথ্য স্ট্রাকচার এবং অ্যালগরিদম আরও আগ্রহী হন।
  • JGraph আপনার প্রাথমিক ফোকাস ভিজ্যুয়ালাইজেশন হয়।
  • Jung , ইয়ওয়ার্কস , এবং BFG অন্যান্য জিনিসগুলি ব্যবহার করে মানুষ চেষ্টা করেছে।
  • Prefuse একটি এটি কোন অধিকাংশ পুনর্লিখন আছে একটি নম্বর নেই।
  • গুগল গুয়াভা শুধুমাত্র যদি ভাল ডেটাস্ট্রাক্ট দরকার।
  • Apache কমন্স গ্রাফ । বর্তমানে নিষ্ক্রিয়, কিন্তু অনেক আলগোরিদিম জন্য বাস্তবায়ন উপলব্ধ করা হয়। প্রয়োগযোগ্য আলগোরিদিমগুলির তালিকার জন্য https://issues.apache.org/jira/browse/SANDBOX-458 দেখুন, এছাড়াও জং, গ্রাফটি, প্রিফিউজ, জেবিপিটি এর সাথে তুলনা করা হয়েছে।

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


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





graph