स्ट्रीमिंग एल्गोरिदम

कंप्यूटर विज्ञान में, स्ट्रीमिंग एल्गोरिदम आकड़ों का प्रवाह को संसाधित करने के लिए एल्गोरिदम हैं जिसमें इनपुट को वस्तुओं के अनुक्रम के रूप में प्रस्तुत किया जाता है और केवल कुछ पासों में जांच की जा सकती है, आमतौर पर एक-पास एल्गोरिथ्म इन एल्गोरिदम को सीमित मेमोरी के साथ संचालित करने के लिए डिज़ाइन किया गया है, आम तौर पर स्ट्रीम के आकार में एल (जटिलता) और/या स्ट्रीम में अधिकतम मूल्य, और प्रति आइटम सीमित प्रसंस्करण समय भी हो सकता है।

इन बाधाओं के परिणामस्वरूप, स्ट्रीमिंग एल्गोरिदम अक्सर डेटा स्ट्रीम के सारांश या स्केच के आधार पर अनुमानित उत्तर देते हैं।

इतिहास
हालाँकि स्ट्रीमिंग एल्गोरिदम का अध्ययन मुनरो और पैटरसन द्वारा पहले ही किया जा चुका था 1978 की शुरुआत में, साथ ही 1982/83 में फिलिप फ्लेजोलेट और जी. निगेल मार्टिन, स्ट्रीमिंग एल्गोरिदम के क्षेत्र को पहली बार 1996 में सावधान अलोन, योसी मतियास और मारियो सजेगेडी द्वारा एक पेपर में औपचारिक और लोकप्रिय बनाया गया था। इस पेपर के लिए, लेखकों ने बाद में स्ट्रीमिंग एल्गोरिदम में उनके मूलभूत योगदान के लिए 2005 में गोडेल पुरस्कार जीता। तब से डेटा स्ट्रीमिंग एल्गोरिदम के आसपास केंद्रित काम का एक बड़ा हिस्सा रहा है जो सिद्धांत, डेटाबेस, नेटवर्किंग और प्राकृतिक भाषा प्रसंस्करण जैसे कंप्यूटर विज्ञान क्षेत्रों के विविध स्पेक्ट्रम तक फैला हुआ है।

अर्ध-स्ट्रीमिंग एल्गोरिथ्म को 2005 में ग्राफ़ के लिए स्ट्रीमिंग एल्गोरिदम में छूट के रूप में पेश किया गया था, जिसमें अनुमत स्थान शीर्षों की संख्या में रैखिक है n, लेकिन किनारों की संख्या में केवल लघुगणक m. यह छूट घने ग्राफ़ के लिए अभी भी सार्थक है, और दिलचस्प समस्याओं (जैसे कनेक्टिविटी) को हल कर सकती है जो अघुलनशील हैं $$o(n)$$ अंतरिक्ष।

डेटा स्ट्रीम मॉडल
डेटा स्ट्रीम मॉडल में, कुछ या सभी इनपुट को पूर्णांकों के एक सीमित अनुक्रम (कुछ परिमित डोमेन से) के रूप में दर्शाया जाता है, जो आम तौर पर यादृच्छिक पहुंच के लिए उपलब्ध नहीं होता है, बल्कि एक स्ट्रीम में एक समय में एक आता है। यदि धारा की लंबाई है n और डोमेन का आकार है m, एल्गोरिदम आम तौर पर उस स्थान का उपयोग करने के लिए बाध्य होते हैं जो एल (जटिलता) में होता है m और n. वे आम तौर पर धारा के ऊपर केवल कुछ छोटी स्थिर संख्या में ही पास बना सकते हैं, कभी-कभी केवल एक-पास एल्गोरिथ्म।

टर्नस्टाइल और कैश रजिस्टर मॉडल
अधिकांश स्ट्रीमिंग साहित्य आँकड़ों की गणना से संबंधित है आवृत्ति वितरण जो संग्रहीत करने के लिए बहुत बड़े हैं। इस वर्ग के लिए समस्याएँ, एक वेक्टर है $$\mathbf{a} = (a_1, \dots, a_n)$$ (शून्य वेक्टर से प्रारंभ किया गया $$\mathbf{0}$$) जिसमें अपडेट हैं इसे एक स्ट्रीम में प्रस्तुत किया गया। इन एल्गोरिदम का लक्ष्य गणना करना है के कार्य $$\mathbf{a}$$ इसकी तुलना में काफी कम जगह का उपयोग करना प्रतिनिधित्व करने के लिए ले जाएगा $$\mathbf{a}$$ एकदम सही। वहाँ दो हैं ऐसी धाराओं को अद्यतन करने के लिए सामान्य मॉडल, जिन्हें कैश रजिस्टर कहा जाता है और घूमने वाला दरवाज़ा मॉडल.

कैश रजिस्टर मॉडल में, प्रत्येक अद्यतन प्रपत्र का होता है $$\langle i, c\rangle$$, ताकि $$a_i$$ कुछ सकारात्मकता से वृद्धि हुई है पूर्णांक $$c$$. एक उल्लेखनीय विशेष मामला है जब $$c = 1$$ (केवल इकाई सम्मिलन की अनुमति है)।

टर्नस्टाइल मॉडल में, प्रत्येक अद्यतन प्रपत्र का होता है $$\langle i, c\rangle$$, ताकि $$a_i$$ कुछ (संभवतः नकारात्मक) पूर्णांक द्वारा वृद्धि की जाती है $$c$$. सख्त टर्नस्टाइल मॉडल में, नहीं $$a_i$$ किसी भी समय शून्य से कम हो सकता है.

स्लाइडिंग विंडो मॉडल
कई पेपर स्लाइडिंग विंडो मॉडल पर भी विचार करते हैं। इस मॉडल में, रुचि का कार्य एक निश्चित आकार की विंडो पर कंप्यूटिंग करना है धारा। जैसे-जैसे स्ट्रीम आगे बढ़ती है, विंडो के अंत से आइटम आते हैं विचार से हटा दिया गया जबकि स्ट्रीम से नए आइटम अपना ले लिए गए जगह।

उपरोक्त आवृत्ति-आधारित समस्याओं के अलावा, कुछ अन्य प्रकार की समस्याएं का भी अध्ययन किया गया है। सेटिंग में कई ग्राफ़ समस्याओं का समाधान किया जाता है जहां आसन्न मैट्रिक्स या ग्राफ़ की आसन्न सूची स्ट्रीम की जाती है कुछ अज्ञात आदेश. कुछ समस्याएँ ऐसी भी होती हैं जो अत्यधिक निर्भर होती हैं धारा के क्रम पर (अर्थात, असममित कार्य), जैसे गिनती एक धारा में व्युत्क्रमों की संख्या और सबसे लंबे समय तक बढ़ने का पता लगाना परिणाम।

मूल्यांकन
डेटा स्ट्रीम पर काम करने वाले एल्गोरिदम का प्रदर्शन तीन बुनियादी कारकों द्वारा मापा जाता है: इन एल्गोरिदम में ऑनलाइन एल्गोरिदम के साथ कई समानताएं हैं क्योंकि इन दोनों को सभी डेटा उपलब्ध होने से पहले निर्णय लेने की आवश्यकता होती है, लेकिन वे समान नहीं हैं। डेटा स्ट्रीम एल्गोरिदम में केवल सीमित मेमोरी उपलब्ध होती है, लेकिन वे बिंदुओं के समूह के आने तक कार्रवाई को स्थगित करने में सक्षम हो सकते हैं, जबकि ऑनलाइन एल्गोरिदम को प्रत्येक बिंदु के आते ही कार्रवाई करने की आवश्यकता होती है।
 * एल्गोरिदम को स्ट्रीम के ऊपर से गुजरने की संख्या।
 * उपलब्ध स्मृति.
 * एल्गोरिदम का चलने का समय।

यदि एल्गोरिदम एक सन्निकटन एल्गोरिदम है तो उत्तर की सटीकता एक अन्य महत्वपूर्ण कारक है। सटीकता को अक्सर एक के रूप में बताया जाता है $$(\epsilon,\delta)$$ सन्निकटन का अर्थ है कि एल्गोरिदम इससे कम की त्रुटि प्राप्त करता है $$\epsilon$$ संभाव्यता के साथ $$1-\delta$$.

अनुप्रयोग
स्ट्रीमिंग एल्गोरिदम के संगणक संजाल  में कई अनुप्रयोग हैं जैसे कि हाथियों के प्रवाह के लिए नेटवर्क लिंक की निगरानी करना, उनकी संख्या की गिनती करना अलग-अलग प्रवाह, प्रवाह आकार के वितरण का अनुमान लगाना, इत्यादि पर। उनके पास एप्लिकेशन भी हैं डेटाबेस, जैसे जॉइन के आकार का अनुमान लगाना (एसक्यूएल). <!--

आवृत्ति क्षण
$k}|k$आवृत्तियों के एक सेट का वां आवृत्ति क्षण $$\mathbf{a}$$ परिभाषित किया जाता है $$F_k(\mathbf{a}) = \sum_{i=1}^n a_i^k$$.

पहले पल $$F_1$$ केवल आवृत्तियों का योग है (अर्थात, कुल गिनती)। दूसरा क्षण $$F_2$$ डेटा के सांख्यिकीय गुणों की गणना के लिए उपयोगी है, जैसे कि गिनी गुणांक भिन्नता का. $$F_{\infty}$$ इसे सबसे अधिक बार आने वाली वस्तुओं की आवृत्ति के रूप में परिभाषित किया गया है।

एलोन, मटियास और सेजेडी के मौलिक पेपर ने आवृत्ति क्षणों का अनुमान लगाने की समस्या से निपटा।

आवृत्ति क्षणों की गणना
आवृत्ति क्षणों को खोजने के लिए एक प्रत्यक्ष दृष्टिकोण के लिए एक रजिस्टर बनाए रखना आवश्यक है $m_{i}$ सभी विशिष्ट तत्वों के लिए $a_{i} ∈ (1,2,3,4,...,N)$ जिसके लिए कम से कम मेमोरी की आवश्यकता होती है आदेश की $$\Omega(N)$$. लेकिन हमारे पास स्थान की सीमाएं हैं और हमें ऐसे एल्गोरिदम की आवश्यकता है जो बहुत कम मेमोरी में गणना करता हो। इसे सटीक मानों के बजाय सन्निकटन का उपयोग करके प्राप्त किया जा सकता है। एक एल्गोरिदम जो (ε,δ)अनुमान की गणना करता है $F_{k}$, कहाँ $F'_{k}$ है (ε,δ)- का अनुमानित मूल्य $F_{k}$. जहां ε सन्निकटन पैरामीटर है और δ आत्मविश्वास पैरामीटर है।

एफएम-स्केच एल्गोरिदम
फ्लेजोलेट एट अल. में गिनती की संभाव्य पद्धति की शुरुआत की जो रॉबर्ट मॉरिस (क्रिप्टोग्राफर) के एक पेपर से प्रेरित थी। मॉरिस अपने पेपर में कहते हैं कि यदि सटीकता की आवश्यकता को हटा दिया जाता है, तो एक काउंटर n को एक काउंटर द्वारा प्रतिस्थापित किया जा सकता है $log n$ जिसमें संग्रहित किया जा सकता है $log log n$ बिट्स. फ्लेजोलेट एट अल. में हैश फ़ंक्शन का उपयोग करके इस पद्धति में सुधार किया गया $h$ जिसे हैश स्पेस (लंबाई की एक बाइनरी स्ट्रिंग) में तत्व को समान रूप से वितरित करने के लिए माना जाता है $L$).


 * $$h:[m] \rightarrow [0,2^{L}-1]$$

होने देना $bit(y,k)$ बाइनरी प्रतिनिधित्व में kth बिट का प्रतिनिधित्व करते हैं $y$


 * $$y = \sum_{k\geq0} \mathrm{bit}(y,k)*2^{k}$$

होने देना $$\rho(y)$$ न्यूनतम की स्थिति का प्रतिनिधित्व करता है के बाइनरी प्रतिनिधित्व में महत्वपूर्ण 1-बिट $y_{i}$ के लिए एक उपयुक्त सम्मेलन के साथ $$\rho(0)$$.


 * $$\rho(y)=\begin{cases}

\mathrm{Min}(k:\mathrm{bit}(y,k)==1) &\text{if } y>0\\ L &\text{if } y=0 \end{cases}$$ मान लीजिए A लंबाई M की डेटा स्ट्रीम का अनुक्रम है जिसकी कार्डिनैलिटी निर्धारित करने की आवश्यकता है। मान लीजिए बिटमैप [0...L − 1] है हैश स्पेस जहां $ρ$(हैशेडवैल्यू) रिकॉर्ड किए जाते हैं। नीचे दिया गया एल्गोरिदम A. की अनुमानित कार्डिनैलिटी निर्धारित करता है प्रक्रिया एफएम-स्केच:

i के लिए 0 से L − 1 तक करें बिटमैप[i] := 0 के लिए समाप्त ए में एक्स के लिए: करो सूचकांक := ρ(हैश(x)) यदि बिटमैप[सूचकांक] = 0 तो बिटमैप[सूचकांक] := 1 अगर अंत के लिए समाप्त बी := बिटमैप के सबसे बाएं 0 बिट की स्थिति[] वापसी 2 ^ बी यदि डेटा स्ट्रीम में N विशिष्ट तत्व हैं।
 * के लिए $$i \gg \log(N)$$ तो BITMAP[i] निश्चित रूप से 0 है
 * के लिए $$i \ll \log(N)$$ तो बिटमैप[i] निश्चित रूप से 1 है
 * के लिए $$i \approx \log(N)$$ तो BITMAP[i] 0 और 1 की एक सीमा है

के-न्यूनतम मूल्य एल्गोरिथ्म
पिछला एल्गोरिदम एफ का अनुमान लगाने के पहले प्रयास का वर्णन करता है0 फ़्लैजोलेट और मार्टिन द्वारा डेटा स्ट्रीम में। उनका एल्गोरिदम एक यादृच्छिक हैश फंकशन चुनता है जिसे वे हैश मानों को हैश स्पेस में समान रूप से वितरित करने के लिए मानते हैं।

बार-योसेफ एट अल. में डेटा स्ट्रीम में अलग-अलग तत्वों की संख्या निर्धारित करने के लिए k-न्यूनतम मान एल्गोरिदम पेश किया गया। उन्होंने एक समान हैश फ़ंक्शन h का उपयोग किया जिसे [0,1] के रूप में सामान्यीकृत किया जा सकता है $$h:[m] \rightarrow [0,1]$$. लेकिन उन्होंने हैश स्पेस में मानों की संख्या के लिए एक सीमा तय की। T का मान क्रम का माना जाता है $$O\left(\dfrac{1}{\varepsilon_{2}}\right)$$ (अर्थात् कम सन्निकटन-मान ε के लिए अधिक t की आवश्यकता होती है)। KMV एल्गोरिदम हैश स्पेस में केवल t-सबसे छोटा हैश मान रखता है। धारा के सभी m मान आ जाने के बाद, $$\upsilon= \mathrm{Max}(h(a_{i} ))$$ गणना करने के लिए उपयोग किया जाता है$$F'_{0}=\dfrac{t}{\upsilon}$$. यानी, एक समान हैश स्पेस में, वे कम से कम टी तत्वों से कम होने की उम्मीद करते हैं $$O\left(\dfrac{t}{F_{0}}\right)$$. प्रक्रिया 2 के-न्यूनतम मूल्य

KMV के पहले t मान प्रारंभ करें एक में एक करने के लिए एक के लिए यदि h(a) <अधिकतम(KMV) तो KMV सेट से Max(KMV) हटाएँ केएमवी में एच(ए) डालें अगर अंत के लिए समाप्त वापसी टी/अधिकतम(केएमवी) 

केएमवी का जटिलता विश्लेषण
KMV एल्गोरिदम को कार्यान्वित किया जा सकता है $$O\left(\left(\dfrac{1}{\varepsilon_{2}}\right)\cdot\log(m)\right)$$ मेमोरी बिट्स स्पेस. प्रत्येक हैश मान के लिए ऑर्डर के स्थान की आवश्यकता होती है $$O(\log(m))$$ मेमोरी बिट्स. ऑर्डर के हैश मान हैं $$O\left(\dfrac{1}{\varepsilon_{2}}\right)$$. यदि हम टी हैश मानों को बाइनरी ट्री में संग्रहीत करते हैं तो एक्सेस समय कम किया जा सकता है। इस प्रकार समय की जटिलता कम हो जाएगी $$O\left(\log\left(\dfrac{1}{\varepsilon}\right)\cdot\log(m)\right)$$.

गणना $F_{k}$
अलोन एट अल. डार्लिंग्स $F_{k}$ यादृच्छिक चर को परिभाषित करके जिनकी गणना दिए गए स्थान और समय के भीतर की जा सकती है। यादृच्छिक चर का अपेक्षित मान अनुमानित मान देता है $F_{k}$.

मान लें कि अनुक्रम m की लंबाई पहले से ज्ञात है। फिर निम्नानुसार एक यादृच्छिक चर X का निर्माण करें:
 * चुनना $a_{p}$ अनुक्रम का एक यादृच्छिक सदस्य बनें $A$ सूचकांक के साथ $p$, $$a_p=l \in(1,2,3,\ldots,n)$$
 * होने देना $$r=|\{q:q\geq p,a_q=l\}|$$, की घटनाओं की संख्या का प्रतिनिधित्व करता है $l$ अनुक्रम के सदस्यों के भीतर $A$ अगले $a_{p}$.
 * अनियमित परिवर्तनशील वस्तु $$X=m(r^k-(r-1)^k)$$.

मान लीजिए एस1 आदेश का हो $$O(n^{1-1/k}/\lambda^{2})$$ और एस2 आदेश का हो $$O(\log(1/\varepsilon))$$. एल्गोरिथम एस लेता है2 अनियमित परिवर्तनशील वस्तु $$Y_1,Y_2,...,Y_{S2}$$ और माध्यिका को आउटपुट करता है $$Y$$. कहाँ $Y_{i}$ का औसत है $X_{ij}$ जहां 1 ≤ जे ≤ एस1.

अब यादृच्छिक चर की अपेक्षा की गणना करें $E(X)$.


 * $$\begin{array}{lll}

E(X) &=& \sum_{i=1}^{n} \sum_{i=1}^{m_i} (j^k-(j-1)^k) \\ &=& \frac{m}{m} [(1^k+(2^k-1^k)+\ldots+ (m_{1}^{k} - (m_{1}-1)^{k})) \\ &&\;+\; (1^k+(2^k-1^k)+\ldots+ (m_{2}^{k} - (m_{2}-1)^{k}))+\ldots \\ &&\;+\; (1^k+(2^k-1^k)+\ldots+ (m_{n}^{k} - (m_{n}-1)^{k}))] \\ &=& \sum_{i=1}^{n} m_{i}^{k} = F_{k} \end{array}$$

की जटिलता $F_{k}$
गणना करने के लिए एल्गोरिदम से $F_{k}$ ऊपर चर्चा की गई है, हम देख सकते हैं कि प्रत्येक यादृच्छिक चर $X$ का मूल्य संग्रहीत करता है $a_{p}$ और $r$. तो, गणना करने के लिए $X$हमें केवल बनाए रखने की जरूरत है $log(n)$भंडारण के लिए बिट्स $a_{p}$ और $log(n)$भंडारण के लिए बिट्स $r$. यादृच्छिक चर की कुल संख्या $X$ यह होंगे $S_1 * S_2$.

इसलिए एल्गोरिदम द्वारा ली गई कुल स्थान जटिलता इस क्रम की है $$O\left(\dfrac{k\log{1 \over \varepsilon}}{\lambda^{2}}n^{1-{1 \over k}}\left(\log n + \log m\right)\right)$$

गणना करने का सरल तरीका $F_{2}$
पिछला एल्गोरिदम गणना करता है $$F_2$$ के क्रम में $$O( \sqrt{n}(\log m + \log n))$$ मेमोरी बिट्स. अलोन एट अल. में मैप किए गए मानों के साथ चार-वार स्वतंत्र यादृच्छिक चर का उपयोग करके इस एल्गोरिदम को सरल बनाया गया $$\{-1,1\}$$.

इससे गणना करने की जटिलता और भी कम हो जाती है $$F_2$$ को $$O\left(\dfrac{\log{1\over\varepsilon}}{\lambda^{2}}\left(\log n + \log m\right)\right)$$

बारंबार तत्व
डेटा स्ट्रीम मॉडल में, लगातार तत्वों की समस्या उन तत्वों के एक सेट को आउटपुट करना है जो स्ट्रीम के कुछ निश्चित अंश से अधिक का गठन करते हैं। एक विशेष मामला बहुसंख्यक समस्या है, जो यह निर्धारित करना है कि कोई मान धारा के बहुमत का गठन करता है या नहीं।

अधिक औपचारिक रूप से, कुछ सकारात्मक स्थिरांक तय करें c > 1, मान लीजिए धारा की लंबाई है m, और जाने fi मूल्य की आवृत्ति को निरूपित करें i धारा में. लगातार तत्वों की समस्या सेट (गणित) को आउटपुट करना है { i | fi >एम/सी }. कुछ उल्लेखनीय एल्गोरिदम हैं:
 * बॉयर-मूर बहुमत वोट एल्गोरिदम
 * काउंट-मिन स्केच
 * हानिपूर्ण गणना एल्गोरिदम
 * मल्टी-स्टेज ब्लूम फिल्टर
 * मिश्रा-ग्रिज़ हेवी हिटर्स एल्गोरिदम
 * मिश्रा-ग्रिज़ सारांश

घटना का पता लगाना
डेटा स्ट्रीम में घटनाओं का पता लगाना अक्सर हेवी हिटर्स एल्गोरिदम का उपयोग करके किया जाता है जैसा कि ऊपर सूचीबद्ध किया गया है: सबसे लगातार आइटम और उनकी आवृत्ति इन एल्गोरिदम में से एक का उपयोग करके निर्धारित की जाती है, फिर पिछले समय बिंदु की तुलना में सबसे बड़ी वृद्धि को प्रवृत्ति के रूप में रिपोर्ट किया जाता है। सामान्यीकरण के लिए घातीय रूप से भारित चलती औसत और विचरण का उपयोग करके इस दृष्टिकोण को परिष्कृत किया जा सकता है।

विभिन्न तत्वों की गिनती
एक स्ट्रीम में अलग-अलग तत्वों की संख्या की गणना करना (कभी-कभी इसे कहा जाता है)। $F_{0}$पल) एक और समस्या है जिसका अच्छी तरह से अध्ययन किया गया है। इसके लिए पहला एल्गोरिदम फ्लैजोलेट और मार्टिन द्वारा प्रस्तावित किया गया था। 2010 में, डैनियल केन (गणितज्ञ), स्पष्टीकरण नेल्सन  और डेविड वुड्रूफ़ ने इस समस्या के लिए एक असम्बद्ध रूप से इष्टतम एल्गोरिदम पाया। यह उपयोगकर्ता है $O(ε^{2} + log d)$ अंतरिक्ष, साथ $O(1)$ सबसे खराब स्थिति में अद्यतन और रिपोर्टिंग समय, साथ ही सार्वभौमिक हैश फ़ंक्शंस और ए $r$-वार स्वतंत्र हैश परिवार जहां $r = Ω(log(1/ε) / log log(1/ε))$.

एंट्रॉपी
आवृत्तियों के एक सेट की (अनुभवजन्य) एन्ट्रापी $$\mathbf{a}$$ है के रूप में परिभाषित $$F_k(\mathbf{a}) = \sum_{i=1}^n \frac{a_i}{m}\log{\frac{a_i}{m}}$$, कहाँ $$m = \sum_{i=1}^n a_i$$.

ऑनलाइन शिक्षण
एक प्रशिक्षण सेट पर एक बार पास करके एक मॉडल (उदाहरण के लिए एक सांख्यिकीय वर्गीकरण) सीखें।


 * फ़ीचर हैशिंग
 * स्टोकेस्टिक ग्रेडिएंट डिसेंट

<!--

निचली सीमा
कई डेटा स्ट्रीमिंग समस्याओं के लिए निचली सीमा की गणना की गई है जिसका अध्ययन किया गया है. कंप्यूटिंग के लिए अब तक की सबसे आम तकनीक ये निचली सीमाएँ संचार जटिलता का उपयोग कर रही हैं।

यह भी देखें

 * डेटा स्ट्रीम खनन
 * डेटा स्ट्रीम क्लस्टरिंग
 * ऑनलाइन एल्गोरिदम
 * स्ट्रीम प्रोसेसिंग
 * अनुक्रमिक एल्गोरिथ्म

संदर्भ

 * . First published as.
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991
 * Heath, D., Kasif, S., Kosaraju, R., Salzberg, S., Sullivan, G., "Learning Nested Concepts With Limited Storage",  Proceeding IJCAI'91 Proceedings of the 12th international joint conference on Artificial intelligence - Volume 2, Pages 777–782,  Morgan Kaufmann Publishers Inc. San Francisco, CA, USA ©1991