2012-01-27 13 views
6

मैं नियंत्रण निर्भरता ग्राफ की धारणा को समझने की कोशिश कर रहा हूं। मैं निम्नलिखित नियंत्रण प्रवाह ग्राफ (डॉट नोटेशन) है मान लीजिए:क्या नियंत्रण निर्भरता ग्राफ में लूप हो सकते हैं?

graph g { 
1 -> 2; 
2 -> 3; 
3 -> 2; 
2 -> 4; 
1 -> 4 
} 

यह एक अद्वितीय प्रविष्टि नोड (1) और एक अद्वितीय बाहर निकलने के नोड (4), और एक पाश 2 है -> 3 -> 2।

मेरा प्रश्न है: क्या इस सीएफजी के लिए नियंत्रण निर्भरता ग्राफ में 2 से लूप एज होता है?

एलन & केनेडी के "आधुनिक आर्किटेक्चर के लिए अनुकूल कंपेलरों" में एक एल्गोरिदम है जो इस तरह के लूप एज का उत्पादन करता है। हालांकि, मचनिक का "कंपाइलर डिज़ाइन & नियंत्रण निर्भरता के लिए कार्यान्वयन के एल्गोरिदम इस तरह के किनारे का उत्पादन नहीं करता है। इसके अलावा, मुझे साहित्य में कोई उदाहरण नहीं मिला जहां एक लूप एज के साथ सीडीजी खींचा गया है। मुझे विश्वास है कि ऐसा कोई किनारा नहीं है, लेकिन नियंत्रण निर्भरता की औपचारिक परिभाषा के अनुसार और एलन & केनेडी के एल्गोरिदम के अनुसार, यह चाहिए!

तो क्या आप मुझे एक उदाहरण को इंगित कर सकते हैं जहां (आदि अधिमानतः एक सहकर्मी की समीक्षा अखबार में, या कुछ प्रोफेसर के व्याख्यान नोट्स,) एक CDG में इस तरह के एक पाश है, या आप तर्क दे सकते हैं अगर क्यों एलन & कैनेडी के एल्गोरिथ्म गलत होना चाहिए, मुझे जानकर खुशी होगी।

+0

इस तरह के निर्भरता ग्राफ की उपयोगिता निर्धारित करती है कि संचालन को कैसे व्यवस्थित किया जाए, है ना? इस अर्थ में, यह जानना सहायक नहीं है कि एक तत्व स्वयं पर निर्भर करता है। यदि आप चाहें तो आप लूप खींच सकते हैं, लेकिन वास्तव में महत्वपूर्ण क्या है अन्य सभी किनारों। – mitchus

+0

हां, मुझे लगता है कि मैं कुछ "कैननिकल परिभाषा" की अपेक्षा कर रहा था जिसे एकाधिक कार्यान्वयन का परीक्षण करने के लिए एक ओरेकल के रूप में इस्तेमाल किया जा सकता था, लेकिन यह सच है कि दोनों संस्करण सभी व्यावहारिक उद्देश्यों के बराबर हैं ... धन्यवाद! – anol

+0

@ मिचस आपको अपनी टिप्पणी को उत्तर में ले जाना चाहिए ताकि इसे उत्तर के रूप में स्वीकार किया जा सके। –

उत्तर

2

Ferrante 1987 के अनुसार, नियंत्रण-निर्भरता लूप मौजूद हो सकते हैं। पेज 325 पर केस 2 में, लेखक बताता है कि

एक से पथ पर बाद dominator पेड़ बी को, , ए और बी सहित के सभी नोड्स नियंत्रण ए पर निर्भर है (इस मामले में किया जाना चाहिए पाश निर्भरता को कैप्चर करता है।)

इस प्रकार इस मामले में नोड ए पर एक लूप होगा।

+0

आप सही हैं, मैंने @ मिचस के जवाब को स्वीकार कर लिया था, लेकिन आपका अधिक सटीक है। मुझे अभी भी मिचस की टिप्पणी काफी प्रासंगिक है। – anol

3

इस तरह के निर्भरता ग्राफ की उपयोगिता निर्धारित करती है कि संचालन को कैसे व्यवस्थित किया जाए, है ना? इस अर्थ में, यह जानना सहायक नहीं है कि एक तत्व स्वयं पर निर्भर करता है। यदि आप चाहें तो आप लूप खींच सकते हैं, लेकिन वास्तव में महत्वपूर्ण क्या है अन्य सभी किनारों।