मैंने ग्राफ़ में सबसे लंबा पथ निर्धारित करने के लिए एक कोड सेगमेंट लिखा था। कोड निम्नलिखित है। लेकिन मुझे नहीं पता कि मध्य में रिकर्सिव विधि के कारण इसमें कम्प्यूटेशनल जटिलता कैसे प्राप्त की जाए। चूंकि सबसे लंबा रास्ता ढूंढना एक एनपी पूर्ण समस्या है, मुझे लगता है कि यह O(n!)
या O(2^n)
जैसा कुछ है, लेकिन मैं वास्तव में इसे कैसे निर्धारित कर सकता हूं? जहां n
नोड्स की संख्या को दर्शाता है और m
विज़िट नहीं किए गए नोड्स की संख्या को दर्शाता है (क्योंकि आप longestPath
m
बार कहते हैं, और वहाँ एक पाश जो दौरा किया परीक्षण n
बार निष्पादित होता है)एक सबसे लंबे पथ एल्गोरिदम की कम्प्यूटेशनल जटिलता एक रिकर्सिव विधि
public static int longestPath(int A) {
int k;
int dist2=0;
int max=0;
visited[A] = true;
for (k = 1; k <= V; ++k) {
if(!visited[k]){
dist2= length[A][k]+longestPath(k);
if(dist2>max){
max=dist2;
}
}
}
visited[A]=false;
return(max);
}
मैं विचार हो रही है। लेकिन क्या आप कृपया बता सकते हैं कि आप कैसे हैं! बड़े ओ – nirandi
के अंदर बहुत बहुत धन्यवाद। जो अधिक समझ में आता है। प्रारंभिक ओ (एन) हमारे पास मुख्य कोड में खराब लूप के कारण है? – nirandi
और मुझे लगता है कि प्रत्येक नोड के लिए अधिकतम संख्या में नोड्स का दौरा किया जाना है, मुझे लगता है कि हमें टी (एन, एन -1) लेना चाहिए। – nirandi