نحن مع غزة
الـرئـيـسـيـة الـمـنـتـدى سـؤال & اجـابـة الـتـبـرع بـالـدم الاسـتـضـافـة هـلال لـيـنـكـس الـقـرآن الـكـريـم Dz-SeC team


التسجيل في المنتدى غير متاح حاليا, اذا كنت ترغب في الحصول على عضوية ارجو مراسلتي على البريد الالكتروني "[email protected]"


مطلوب مشرفين على كامل اقسام المنتدى


أخي / أختي , إن تسجيل عضوية جديدة في منتدى شبكة الجزائر للجميع لا يهدف إلى زيادة الأعضاء مطلقا
فلا خير في عضوية عدد مشاركاتها صفرا فنحن نرفض يوميا الكثير من العضويات المشكوك في أمرها
سواء كان هدفها الإعلانات الغير شرعية أو تخريب الموضوعات الخ , كل هذا حتى يبقى المنتدى
ساحة جادة عطرة تجود بالخير لكل زوارها وأعضائها
وصدقة جارية لكل من يشارك في كتابة معلومة تفيد غيره سوف يشكر الله عليها وهو في جوف الأرض ...

لذلك نطلب منك التسجيل بل ونلح عليك إن كان هدفك هو أن تصنع صدقة جارية لا تنقطع إلى يوم الدين بمساعدة إخوانك في نشر الخير .

للتسجيل اضغط هنا وأملأ البينات المطلوبة بشكل صحيح ومن ثم انتظر حتى نقوم بتفعيل حسابك وابدأ رحلتك في صناعة صدقة جارية .

وتذكر قول سيد الخلق " إذا مات ابن آدم انقطع عمله إلا من ثلاث صدقة جارية أو علم ينتفع به أو ولدٍ صالح يدعو له "

   

[ مـنـتـدي لـــغــات الـــبرمجـــه | Programming Language ] قسم مختص بالبرمجة التفسيرية مثل : PHP, java, perl, Python, Bash, Shell script, JPython, AutoIt, Z shell, AWK, VB Script

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 16/06/2010, 09:25   المشاركة رقم: 1
المعلومات
الكاتب:
 حواء الهاكر  
اللقب:
عضــــو جديــــد
الصورة الرمزية
 
الصورة الرمزية حواء الهاكر

البيانات
التسجيل : May 2010
العضوية : 146
الاهتمامات : الجزائر
الإقامة : المطالعة
المواضيع : 33
الردود : 67
المجموع : 100
بمعدل : 0.02 يوميا
الاختراقات : []
مجتمعنا : []
الصنف : Not Hacker
آخر تواجد : 20/02/2011/16:08
سبب الغياب :
معدل التقييم: 16
نقاط التقييم: 10
حواء الهاكر is on a distinguished road
شكراً: 0
تم شكره 11 مرة في 11 مشاركة



الإتصالات
الحالة:
حواء الهاكر غير متواجد حالياً
وسائل الإتصال:

افتراضي 8.المصفوفة المتناثرة Sparse Matrix

المصفوفة المتناثرة أو مصفوفة الأصفارSparse Matrix :

لو ألقينا نظرة على المصفوفة التالية التي تحوي 6 صفوف و6 أعمدة وتتكون من : 6x 6 = 36 عنصر :

سيتضح لنا من الوهلة الأولى أن أكثر عناصر هذه المصفوفة عبارة عن " أصفار " ؛ تسمى المصفوفة التي أكثر عناصرها أصفار بـمصفوفة الأصفار أو المصفوفة المتناثرة " Sparse Matrix" . ومن الصعب علينا تحديد ما إذا كانت المصفوفة عبارة عن Sparse Matrix أو لا .. ولكن يتضح لنا ذلك عن طريق النظر؛ ففي المصفوفة السابقة يوجد فقط 8 عناصر لا تساوي الصفر من أصل 36 عنصر، بينما البقية كلها أصفار .
نعالج الـ Sparse Matrix بالتكنيك الذي سنشرحه في درسنا لتوفير المساحة في الذاكرة حيث نستطيع تخزين العناصر الغير مساوية للصفر فيها فقط ؛ وذلك من خلال استخدام مصفوفة وحيدة لكل عنصر من عناصرها يوجد 3 صفات هي : الصف والعمود والقيمة الخاصة به؛ ويتم ذلك عن طريق استخدامنا لـClass كالتالي :
package Sparse_Matrix;

public class SM extends Object {
private int row , col , val ;

//-----------<< SM constructor >>------------------------

public SM (int row1 ,int col1 ,int val1 ) {
setrow(row1) ;
setcol(col1) ;
setval(val1) ;
}

//-----------<< Method to perform row >>-----------------
public int setrow(
int row1 ){
return row = row1 ;
}
//-----------<< Method to perform column >>--------------
public int setcol( int col1 ){ return col = col1 ;
}
//-----------<< Method to perform value >>---------------
public int setval( int val1 ){
return val = val1 ;
}
//-----------<< Method to Print >>-----------------------
public String Print() {
return ( row +"t"+ col +"t"+ val +"n") ;
}
}

ولكن يجب أن نراعي هنا أن ترتيب العناصر في هذه المصفوفة الوحيدة سيكون تابع لأحد هذه الصفات وهو الصف " row " و لابد من أن يكون تصاعدياً ..
إذن .. يتضح لدينا أن تعريف الـ Sparse Matrix كما هو موجود في قاموسنا كالتالي :
مصفوفة ذات بعد واحد تحوي الكثير من العناصر المتشابهة ، والتي غالباً ما تساوي صفر، لكل عنصر فيها ثلاث صفات : الصف ، العمود ، والقيمة التي تسند إليه .
* Sparse_Matrix : a set of triples < row , col , value > , where row & column are integers & from a unique combination , & value comes from the set item .
* Sparse_Matrix Create(max_row , max_col) ::= return a Sparse_Matrix that can hold up to max_item = max_row X max_col ,& whose maximum row size is max_row , & whose maximum column size is max_col.
ومن هنا نستطيع إعادة رسم الـ [Sparse Matrixكما في الشكل التالي :
حيث أن a[0].row تحتوي عدد الأسطر الكلي للمصفوفة الأصلية ( في هذا المثال = 6 ) , كذلك a[0].col فهي تحوي عدد الأعمدة الكلي للمصفوفة الأصلية ( في هذا المثال = 6 ) , وأيضاً a[0].value عدد العناصر الغير مساوية للصفر فقط ( في هذا المثال = 8 ) .
ولكي نعرف رقم الصف لأي عنصر ننظر لـ Field row , وبالمثل إذا أردنا أن نعرف رقم العمود فننظر لـ Field col وستكون قيمة هذا العنصر مخزنة في Field value . والثلاثي < row , col , value > سيكون مرتب في المصفوفة على حسب الصفوف " تصاعدياً " كما ذكرنا سابقاً ..
ولكن كيف نستطيع كتابة شيفرة لإنشاء هذه المصفوفة بلغة الجافا ؟ هذا ما سنعرفه ان شاء الله خلال الأسطر التالية :



1) في البداية نقوم بعمل ملف ونسمّيه: Sparse_Matrix مثلاً كما اعتمدنا في هذا المثال. 2) ثم نقوم بعمل كلاس نسميّه SM ونخزّنه في الملف السابق الذكر بعد أن نعمل فيه package Sparse_Matrix ونكتب في هذا الكلاس الكود السابق. 3) ثم نقوم بعمل Application ونضع فيه إستدعاء للكلاس السابق أي : import Sparse_Matrix.SM .. ونكتب فيه شيفرة لمعالجة المصفوفة المتناثرة بالتسلسل التالي:
  • سنفترض في مثالنا الحالي أن المصفوفة مكوّنة من 3 صفوف و3 أعمدة ..
  • وبعد ذلك نسمح للمستخدم بإدخال العناصر كمصفوفة عادية شريطة أن تكون أكثرها مساوية للصفر ونطبع المصفوفة بالطريقة التقليدية العادية.
  • ثم نقوم بإنشاء الـ Sparse Matrix]؛ نخزّن في البداية عدد الصفوف الكلي وعدد الأعمدة الكلي في كل من a[0].row و a[0].col .. ثم نضع عداداً = 1 كفهرس لكي نبدأ التخزين ..
  • نقوم بعمل Loop يمّر على كل عناصر المصفوفة العادية ويسأل ما إذا كان هذا العنصر مساوياً للصفر أما لا ؟
    إذا اتضح أن العنصر لا يساوي الصفر .. نقوم بتخزين رقم الصف الموجود فيه هذا العنصر وكذلك رقم العمود ثم نخزّن قيمة العنصر باستخدام العداد الذي جعلنا قيمته =1 كفهرس لأول عنصر يقابلنا غير مساوي للصفر .. ثم نزيد قيمة العداد بواحد لكي يفهرس العنصر المخزن الجديد .. وهكذا إلى أن ننتهي من جميع عناصر المصفوفة الأصلية .
  • الآن قمنا بتخزين جميع القيم الغير مساوية للصفر في الـSparse Matrix ولكن يتبقى Field واحد لم نخزّن به شئ .. أتعلمون ما هو ؟
    إنه الـ Field الخاص بعدد العناصر الغير مساوية للصفر في المصفوفة الأصلية (a[0].val ) .. ونستطيع معرفة عدد العناصر الغير مساوية للصفر من خلال العداد الذي فهرس العناصر ..
    ولكن نلاحظ هنا أن هذا العداد داخل Loop عندما انتهى التخزين قد زادت قيمته بواحد على عدد العناصر الغير مساوية للصفر؛ فيجب علينا أن نقوم بانقاص قيمته بمقدار واحد ثم نخزنها في a[0].val ...
  • الآن نستطيع نقوم بطباعة المصفوفة المتناثرة الناتجة لدينا.
وأليك الشيفرة كاملة:





import Sparse_Matrix.SM;
import javax.swing.*;

public class Sparse_MatrixO {
public static void main (String args[])
{
int Matrix [][] ;
int i , j , q ,count = 1 ;
SM SparseMatrix ;
SparseMatrix=
new SM(0,0,0);
String x,output="";
output+=
"The Normal Matrix :n";
JTextArea outputarea = new JTextArea(
10,20);
Matrix = new int[
3][3];
//-----------<< To Read & Print Normal Matrix >>-------------------
for(i=
0 ; i<3 ; i++){
for(j=0 ; j<3 ; j++){
x=JOptionPane.showInputDialog(
"plz. Enter the value of element n");
q = Integer.parseInt(x) ;
Matrix[i][j] = q ;
output += Matrix[i][j] +
"t" ;
if ( Matrix[i][j] != 0 ) count++ ;
}
// end of j Loop
output +=
"n" ;
}
// end of i Loop
//-----------<< To Make & Print Sparse_Matrix >>-------------------

output +=
"n The Sparce_Matrix :nrowtcoltvaluen--------------------------------------------------n" ;
SparseMatrix.setcol(
3);
SparseMatrix.setrow(
3);
SparseMatrix.setval(count-
1);
output += SparseMatrix.Print() ;
for(i=0 ; i<3 ; i++){
for(j=
0 ; j<3 ; j++){
if ( Matrix[i][j] != 0 ) {
SparseMatrix.setcol(j);
SparseMatrix.setrow(i);
SparseMatrix.setval(Matrix[i][j]);
output += SparseMatrix.Print() ;
}
// end of if
}
// end of j Loop
}
// end of i Loop

outputarea.setText(output);
JOptionPane.showMessageDialog(
null,outputarea,"Sparse_Matrix", JOptionPane.INFORMATION_MESSAGE);
System.exit(
0);
}
}


طبعاً، في برنامجنا المتواضع أدخلنا العناصر عنصراً عنصراً، وهي طريقة غير عملية بتاتاً مع التطبيقات الكبيرة، حيث أننا في التطبيقات الكبيرة نخزن المصفوفة في ملف ونقوم بقراءة عناصرها منه.

وهكذا .. نكون قد وفرنا الذاكرة لدينا عند استخدام مثل هذه المصفوفات في حل المشكلات الكبيرة ..



آخر مواضيع » حواء الهاكر

توقيع : حواء الهاكر

عرض البوم صور حواء الهاكر   رد مع اقتباس
قديم 18/08/2010, 09:51   المشاركة رقم: 2
المعلومات
الكاتب:
  MdMn HaCk3r  
اللقب:
.: المدير السابق للمنتدى :.

الإتصالات
الحالة:
MdMn HaCk3r غير متواجد حالياً
وسائل الإتصال:

دائمأ مواضيعك متعوب عليها
****ً لكِ

عرض البوم صور MdMn HaCk3r   رد مع اقتباس
قديم 14/05/2015, 17:33   المشاركة رقم: 3
المعلومات
الكاتب:
 meravn19dz  
اللقب:
عضــــو جديــــد

الإتصالات
الحالة:
meravn19dz غير متواجد حالياً
وسائل الإتصال:

برك اله فيك

عرض البوم صور meravn19dz   رد مع اقتباس
إضافة رد

مواقع النشر (المفضلة)


حالياً الأعضاء النشيطين الذين يشاهدون هذا الموضوع : 1 (0 عضو و 1 ضيف)
 

(أظهر الكل الأعضاء الذين قاموا بمشاهدة هذا الموضوع : 6
حواء الهاكر , mbsoft , MdMn HaCk3r , meravn19dz , صفصف . . . ! , S1LV3rS3rf3r

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة

الانتقال السريع

المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
[webapps / 0day] - AJ Matrix DNA SQL Injection Vulnerability ADMINISTRATOR قسم الثغرات 0 09/12/2010 21:00

الساعة معتمدة بتوقيت جرينتش +1 . الساعة الآن : 13:55.
Copy Right Des 2010 - 2014 To is|sec Organization, Des By  yasMouh 
Powered By vBulletin Special Edition, Secured By Dz-SeC team
Support by Dz-SeC team




RSS RSS 2.0 XML MAP HTML



 
 
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115