السلام عليكم
هذه الايام ادرس مادة graph theory في الجامعة
و استعمل الجافا في الدروس التطبيقية
فهل يوجد مكتبة او كلاس في الجافا لي رسم و تمثيل graoh
السلام عليكم
هذه الايام ادرس مادة graph theory في الجامعة
و استعمل الجافا في الدروس التطبيقية
فهل يوجد مكتبة او كلاس في الجافا لي رسم و تمثيل graoh
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
بارك الله فيك اخي
لقد حملت المكتبة و اضفتها الى netbeans عن طريق tool->library و حددت مسارها و تمت اضافتها
و عندما افتح مشروع و اضيفها الى مكتبات المشروع , عندما اعمل import لي اي class, ال netbeans لا يتعرف على المكتبة
حاولت البحث عن دروس او شرح لي هذه المكتبة لكن لم اجد
من عنده فكرة عن موضوع JGraphT فليفدنا افادكم الله.
اريد فقط الاساسيات و إن شاء الله سافهم الباقى
السلام عليكم ..
لدينا أمران :
أولا : تمثيل الغراف representation :
أي يتم تمثيل البيان في الذاكرة .. المكتبة تزودنا بعدة أنواع من الغرافات ..SimpleDirectedGraph و SimpleDirectedWeightedGraph و SimpleWeightedGraph و SimpleGraph
و هذا مثال عن أبسط أنواعها و هو الــ SimpleGraph و هو صف مشتق من الصف UndirectedGraph .. (انتبه لهرمية الصفوف ) :
كيف نعرف غراف :
-------------------------------------------------------------------------------
UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
حيث هنا نوع العقد هو String .. (يمكنك إضافة أي صف كعقدة) ....و نوع الحواف (Edges) هو DefaultEdge (ربما هناك أنواع أخرى)..
ملاحظة :
يمكنك كتابته بالشكل :
SimpleGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);
فلا مشكلة ... حسب الــ OOP ... (هكذا ورد بالمثال)
----------------------------------------------------------------------------
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);هنا تم إضافة العقد من نوع String لأان الغراف تم تعريفه أن عقده من نوع String
----------------------------------------------------------------------------------------------------
// add edges to create a circuit
g.addEdge(v1, v2);
g.addEdge(v2, v3);
g.addEdge(v3, v4);
g.addEdge(v4, v1);هنا تم إضافة الحواف Edges (ماذا كان اسمها بالعربي؟؟) ..بين العقد ..
------------------------------------------------------------------------------------
System.out.println(g.toString());
طباعة الغراف ..
------------------------------------------------------------------------------------
المثال كاملا :
package myPackage;
import javax.swing.JFrame;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.DefaultEdge;
import org.jgrapht.graph.SimpleGraph;
public class FrmMain extends JFrame
{
public static void main(String[] args)
{
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);
System.out.println(g.toString());
}
}ثانيا : رسم الغراف visualization :
رسم الغراف على Applet .أو ..أي كائن قابل للرسم عليه ...و هنا مثال بالسورس كود :
http://www.jgrapht.o...alizations.html
ملاحظة :
لو أردت أرفع لك البروجكت ...(Netbeans 6.8) ...
تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 31 أكتوبر 2011 في 22:05
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
استفسار, ما المقصود بـ رسم و تمثيل graph هل مثال ذلك الـ pie chart, line chart, and bar chart ؟
ام ان المقصد غير ذلك؟
إذا نظــرتَ نيـوب اللـّيـثِ بـارزةً فـلا تظــنَنَ أَنَّ اللـّيـــثَ يبْتسـِـــمُ
رسم المخططات البيانية بواسطة الجافا
كتاب تحليل وتصميم نظم المعلومات
السلام عليكم
لا ليس المقصود هو رسم البيانات
the graph theory هو احدى العلوم الرياضية المستعملة بكثرة في الاعلام الالى , و له عدة تطبيقات اهمها في الشبكات , و به يصنع المترجمات ...
راجع هذه المقالة الرابط الخاص بي
بارك الله فيك اخي
thaaaaaaanks a lot
المكتبة تعمل , و الكود شغال , استطيع انشاء اي graphe اريده شكرا
لكنى اواجه مشاكل في الرسم
سوالي هو : هل من الضروري تحميل مكتبة JGraph لكي استطيع الرسم , ام JGraphT فقط.
لاني demo الذي اعطيتني ايه يستعمل JGraph
تقبل تحياتى
houssam11350_11350 كتب:السلام عليكم ..
- حمَل الملف jgrapht-0.8.2.zip من الموقع http://www.jgrapht.org أو من الرابط المباشر هنا (أحيانا لا يعمل او يغير).
- افتح الملف jgrapht-0.8.2.zip (هو ليس المكتبة) و ستجد داخله المكتبة المسماة jgrapht-jdk1.6.jar .. استخرجها و اضفها إلى المشروع ..
لدينا أمران :
أولا : تمثيل الغراف representation :
أي يتم تمثيل البيان في الذاكرة .. المكتبة تزودنا بعدة أنواع من الغرافات ..SimpleDirectedGraph و SimpleDirectedWeightedGraph و SimpleWeightedGraph و SimpleGraph
و هذا مثال عن أبسط أنواعها و هو الــ SimpleGraph و هو صف مشتق من الصف UndirectedGraph .. (انتبه لهرمية الصفوف ) :
كيف نعرف غراف :
-------------------------------------------------------------------------------
UndirectedGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);حيث هنا نوع العقد هو String .. (يمكنك إضافة أي صف كعقدة) ....و نوع الحواف (Edges) هو DefaultEdge (ربما هناك أنواع أخرى)..
ملاحظة :
يمكنك كتابته بالشكل :
SimpleGraph<String, DefaultEdge> g = new SimpleGraph<String, DefaultEdge>(DefaultEdge.class);فلا مشكلة ... حسب الــ OOP ... (هكذا ورد بالمثال)
----------------------------------------------------------------------------
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);هنا تم إضافة العقد من نوع String لأان الغراف تم تعريفه أن عقده من نوع String
----------------------------------------------------------------------------------------------------
// add edges to create a circuit g.addEdge(v1, v2); g.addEdge(v2, v3); g.addEdge(v3, v4); g.addEdge(v4, v1);هنا تم إضافة الحواف Edges (ماذا كان اسمها بالعربي؟؟) ..بين العقد ..
------------------------------------------------------------------------------------
System.out.println(g.toString());طباعة الغراف ..
------------------------------------------------------------------------------------
المثال كاملا :
package myPackage; import javax.swing.JFrame; import org.jgrapht.UndirectedGraph; import org.jgrapht.graph.DefaultEdge; import org.jgrapht.graph.SimpleGraph; public class FrmMain extends JFrame { public static void main(String[] args) { 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); System.out.println(g.toString()); } }ثانيا : رسم الغراف visualization :
رسم الغراف على Applet .أو ..أي كائن قابل للرسم عليه ...و هنا مثال بالسورس كود :
http://www.jgrapht.o...alizations.html
ملاحظة :
لو أردت أرفع لك البروجكت ...(Netbeans 6.8) ...
بارك الله فيك اخي
thaaaaaaanks a lot
المكتبة تعمل , و الكود شغال , استطيع انشاء اي graphe اريده شكرا
لكنى اواجه مشاكل في الرسم
سوالي هو : هل من الضروري تحميل مكتبة JGraph لكي استطيع الرسم , ام JGraphT فقط.
لاني demo الذي اعطيتني ايه يستعمل JGraph
تقبل تحياتى
و يا حبذا ان تعطيني مثال مرسوم .
تم تعديل هذه المشاركة بواسطة sahraoui17 في 1 نوفمبر 2011 في 09:06
السلام عليكم ..
اقتباسلاني demo الذي اعطيتني ايه يستعمل JGraph
نعم ..صحيح ..لم انتبه للموضوع ...
و أيضا يوجد عندك الــ jgraphx ... اطلع عليه ...يمكنها رسم الغراف على الفورم ..(لكن للأسف العقد تكون مربعة ... و يمكنك الأستفادة من الأكواد التالية)
http://downloads.jgr...rchive/?C=M;O=D
package myPackage;
import java.util.Random;
public class MyVertex
{
public String VertexValue = "";
public Object VisualVetex = null;
public int X = 0;
public int Y = 0;
public int Width = 0;
public int Height = 0;
public MyVertex(String VertexValue)
{
Random random = new Random();
this.VertexValue = VertexValue;
this.X = random.nextInt(400);
this.Y = random.nextInt(400);
this.Width = 10 + random.nextInt(20);
this.Height = 10 + random.nextInt(20);
}
public MyVertex(String VertexValue, int X, int Y, int Width, int Height)
{
this.VertexValue = VertexValue;
this.X = X;
this.Y = Y;
this.Width = Width;
this.Height = Height;
}
}package myPackage;
import org.jgrapht.graph.DefaultEdge;
public class MyEdge extends DefaultEdge
{
public MyVertex getMyVertexSource()
{
return (MyVertex)super.getSource();
}
public MyVertex getMyVertexTarget()
{
return (MyVertex)super.getTarget();
}
}package myPackage;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.view.mxGraph;
import javax.swing.JFrame;
import org.jgrapht.UndirectedGraph;
import org.jgrapht.graph.SimpleGraph;
public class FrmMain extends JFrame
{
UndirectedGraph<MyVertex, MyEdge> g;
public FrmMain()
{
buildGraph();
drawGraph();
}
public void buildGraph()
{
g = new SimpleGraph<MyVertex, MyEdge>(MyEdge.class);
MyVertex v1 = new MyVertex("v1" , 10 , 10 , 20 , 20);
MyVertex v2 = new MyVertex("v2");
MyVertex v3 = new MyVertex("v3" , 400,400, 30 , 30);
MyVertex v4 = new MyVertex("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);
System.out.println(g.toString());
}
public void drawGraph()
{
mxGraph graph = new mxGraph();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try
{
for (MyVertex myVertex : g.vertexSet())
{
myVertex.VisualVetex = graph.insertVertex(parent, null, myVertex.VertexValue, myVertex.X , myVertex.Y, myVertex.Width,myVertex.Height);
}
for (MyEdge myEdge : g.edgeSet())
{
graph.insertEdge(parent, null, "Edge", myEdge.getMyVertexSource().VisualVetex , myEdge.getMyVertexTarget().VisualVetex);
}
} finally
{
graph.getModel().endUpdate();
}
mxGraphComponent graphComponent = new mxGraphComponent(graph);
getContentPane().add(graphComponent);
}
public static void main(String[] args)
{
FrmMain frame = new FrmMain();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(400, 320);
frame.setVisible(true);
}
}ملاحظة :
عليك قراءة التوثيق الكامل لأي مكتبة تريد استخدامها ..
تم تعديل هذه المشاركة بواسطة houssam11350_11350 في 1 نوفمبر 2011 في 16:57
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
السلام عليكم
شكرا اخي و بارك الله فيك
و جعلك الله دائما في خدمة المسلمين
الكود يعمل , و لقد فهمته و ساعدل عليه
houssam11350_11350 كتب:ملاحظة :
عليك قراءة التوثيق الكامل لأي مكتبة تريد استخدامها ..
لماذا يجب قراءة التوثيق
هل الامر يتعلق بي الحقوق
لانه لا توجد متبعات قضائية في الوطن العربي فلماذا اقراه
السلام عليكم ...
اقتباسلماذا يجب قراءة التوثيق
هل الامر يتعلق بي الحقوق
أقصد بالتوثيق هو الــ Documentation .. أي شرح المكتبة و الصفوف الموجودة فيها و طريقة استخدامها و الــ API التي تزودنا به ...
أما موضوع الحقوق فهو ضمن اتفاقية الترخيص License ..
لا إله إلا الله ... محمد رسول الله
لو كانت مشاركتي مفيدة و تريد تشجيعي على المزيد من العطاء , فضلا قم بتقييم المشاركة
المعرًف القديم : houssam11350_11350
من مواضيعي : ArabGenCode : مولد كود و إجراءات مخزنة و واجهات لجداول سيكوال سيرفر
houssam11350_11350 كتب:أقصد بالتوثيق هو الــ Documentation .. أي شرح المكتبة و الصفوف الموجودة فيها و طريقة استخدامها و الــ API التي تزودنا به ..
شكرا