مكدس ذو بنية بيانية
في علم الحاسوب ، تُعرف المكدسة ذات البنية البيانية (GSS) بأنها رسم بياني موجه غير دوري ، حيث يمثل كل مسار موجه مكدسة . تُعد المكدسة ذات البنية البيانية جزءًا أساسيًا من خوارزمية توميتا ، حيث تحل محل المكدسة التقليدية في آلة الدفع السفلي . وهذا يسمح للخوارزمية بترميز الخيارات غير الحتمية في تحليل القواعد النحوية الغامضة ، وأحيانًا بكفاءة أعلى.
في الرسم التخطيطي التالي، توجد أربع مجموعات: {7,3,1,0}، {7,4,1,0}، {7,5,2,0}، و {8,6,2,0}.
هناك طريقة أخرى لمحاكاة عدم الحتمية، وهي تكرار المكدس حسب الحاجة. سيكون التكرار أقل كفاءة لأن الرؤوس لن تكون مشتركة. في هذا المثال، سنحتاج إلى 16 رأسًا بدلًا من 9.
العمليات
GSSnode * GSS::add ( GSSnode * prev , int elem ) { int prevlevel = prev -> level ; assert ( levels . size () >= prevlevel + 1 ); int level = prevlevel + 1 ; if ( levels . size () == level ) { levels . resize ( level + 1 ); } GSSnode * node = findElemAtLevel ( level , elem ); if ( node == nullptr ) { node = new GSSnode (); node -> elem = elem ; node -> level = level ; levels [ level ]. push_back ( node ); } node -> add ( prev ); return node ; }void GSS::remove ( GSSnode * node ) { if ( levels.size ( ) > node- > level + 1 ) if ( findPrevAtLevel ( node- > level + 1 , node )) throw Exception ( "لا يمكن الحذف إلا من الأعلى." ); for ( int i = 0 ; i < levels [ node- > level ] .size (); i ++ ) if ( levels [ node- > level ][ i ] == node ) { levels [ node- > level ] .erase ( levels [ node- > level ] .begin () + i ); break ; } delete node ; }مراجع
- ماسارو توميتا. المكدس ذو البنية البيانية وتحليل اللغة الطبيعية . الاجتماع السنوي لرابطة اللغويات الحاسوبية، 1988.
- إليزابيث سكوت، أدريان جونستون GLL إعراب gll.pdf
فئات :
- هياكل بيانات الرسم البياني
- رسوم بيانية خاصة بالتطبيق
- مقالات قصيرة في علوم الحاسوب

