Retroactive data structure
કોમ્પ્યુટર વિજ્ઞાનમાં પૂર્વવર્તી માહિતી માળખું એ માહિતી માળખું છે જે માળખા પર કરવામાં આવેલી કામગીરીના ક્રમમાં કાર્યક્ષમ ફેરફારોને ટેકો આપે છે. આ ફેરફારો ભૂતકાળમાં અમુક સમયે કરવામાં આવેલી કામગીરીને પાછલી અસરથી દાખલ કરવા, કાઢી નાખવા અથવા અપડેટ કરવાનું સ્વરૂપ લઈ શકે છે. પાછલી સક્રિય માહિતી માળખાઓની કેટલીક એપ્લિકેશનો વાસ્તવિક દુનિયામાં એવા ઘણા કિસ્સાઓ છે કે જ્યાં કોઈ વ્યક્તિ કામગીરીના ક્રમમાંથી ભૂતકાળની કામગીરીમાં ફેરફાર કરવા માંગે છે. કેટલીક સંભવિત એપ્લિકેશનો નીચે સૂચિબદ્ધ છેઃ ભૂલ સુધારણા-માહિતીનું ખોટું ઇનપુટ. ડેટાને સુધારવો જોઈએ અને ખોટા ડેટાની તમામ ગૌણ અસરોને દૂર કરવી જોઈએ. ખરાબ ડેટાઃ મોટી સિસ્ટમો સાથે વ્યવહાર કરતી વખતે, ખાસ કરીને જેમાં મોટી માત્રામાં સ્વચાલિત ડેટા ટ્રાન્સફરનો સમાવેશ થાય છે, તે અસામાન્ય નથી. ઉદાહરણ તરીકે, ધારો કે હવામાન નેટવર્કની ખામી માટેના સેન્સરમાંથી એક અને કચરાના ડેટા અથવા ખોટા ડેટાની જાણ કરવાનું શરૂ કરે છે. આદર્શ ઉકેલ એ હશે કે સેન્સર દ્વારા ઉત્પાદિત તમામ ડેટાને દૂર કરવામાં આવે કારણ કે તે ખરાબ ડેટાની એકંદર સિસ્ટમ પરની તમામ અસરો સાથે ખામીયુક્ત છે. પુનઃપ્રાપ્તિઃ ધારો કે હાર્ડવેર સેન્સરને નુકસાન થયું હતું પરંતુ હવે તેનું સમારકામ કરવામાં આવ્યું છે અને ડેટા સેન્સરમાંથી વાંચી શકાય છે. અમે સિસ્ટમમાં ડેટા પાછો દાખલ કરવામાં સક્ષમ થવા માંગીએ છીએ જાણે કે સેન્સરને પ્રથમ સ્થાને ક્યારેય નુકસાન થયું ન હોય. ભૂતકાળની હેરફેરઃ ભૂતકાળને બદલવું નુકસાન નિયંત્રણના કિસ્સાઓમાં મદદરૂપ થઈ શકે છે અને ભૂતકાળની ઇરાદાપૂર્વકની હેરફેર માટે પાછલી અસરગ્રસ્ત માહિતી માળખા તૈયાર કરવામાં આવે છે. અવકાશી પરિમાણ તરીકે સમયને વધારાના અવકાશી પરિમાણ તરીકે ગણવો શક્ય નથી. આને સમજાવવા માટે ધારો કે આપણે સમયના પરિમાણને અવકાશના અક્ષ પર નકશો બનાવીએ છીએ. અવકાશી સમયનું પરિમાણ ઉમેરવા માટે આપણે જે માહિતી માળખાનો ઉપયોગ કરીશું તે લઘુતમ-ઢાળ છે. ચાલો y અક્ષ ઢગલાની અંદરની વસ્તુઓના મુખ્ય મૂલ્યોનું પ્રતિનિધિત્વ કરે અને x અક્ષ અવકાશી સમયનું પરિમાણ છે. ઘણા નિવેશ અને ડીલીટ-મિનિમ કામગીરીઓ પછી (બધા બિન-પુનરાવર્તિત રીતે કરવામાં આવે છે) આપણો લઘુતમ-ઢાળ આકૃતિ 1ની જેમ દેખાશે. હવે ધારો કે આપણે કામગીરીની સૂચિની શરૂઆતમાં પાછલી અસરથી શૂન્ય દાખલ કરીએ છીએ. આપણો લઘુતમ જથ્થો આકૃતિ 2 જેવો દેખાશે. નોંધ લો કે કેવી રીતે સિંગલ ઓપરેશન કાસ્કેડિંગ અસર પેદા કરે છે જે સમગ્ર ડેટા સ્ટ્રક્ચરને અસર કરે છે. આમ આપણે જોઈ શકીએ છીએ કે જ્યારે સમયને અવકાશી પરિમાણ તરીકે દોરવામાં આવે છે, ત્યારે સમય સાથે સંકળાયેલી કામગીરીઓ અવલંબન પેદા કરે છે જે સમયના સંદર્ભમાં ફેરફારો કરવામાં આવે ત્યારે તરંગ ધરાવે છે. દ્રઢતા સાથે સરખામણી પ્રથમ નજરમાં પૂર્વવર્તી માહિતી માળખાઓની કલ્પના સતત માહિતી માળખાઓ જેવી જ લાગે છે કારણ કે તે બંને સમયના પરિમાણને ધ્યાનમાં લે છે. સતત ડેટા સ્ટ્રક્ચર્સ અને પૂર્વવર્તી ડેટા સ્ટ્રક્ચર્સ વચ્ચેનો મુખ્ય તફાવત એ છે કે તેઓ સમયના તત્વને કેવી રીતે હેન્ડલ કરે છે. સતત માહિતી માળખું માહિતી માળખાની ઘણી આવૃત્તિઓ જાળવે છે અને માહિતી માળખાના બીજા સંસ્કરણનું ઉત્પાદન કરવા માટે એક સંસ્કરણ પર કામગીરી કરી શકાય છે. દરેક ઓપરેશન એક નવું સંસ્કરણ ઉત્પન્ન કરે છે, તેથી દરેક સંસ્કરણ એક આર્કાઇવ બની જાય છે જેને બદલી શકાતું નથી (તેમાંથી માત્ર નવી આવૃત્તિઓ પેદા કરી શકાય છે). દરેક સંસ્કરણ બદલાતું નથી, તેથી દરેક સંસ્કરણ વચ્ચેની નિર્ભરતા પણ બદલાતી નથી. પાછલી અસરગ્રસ્ત માહિતી માળખામાં અમે ફેરફારોને સીધા અગાઉના સંસ્કરણોમાં કરવાની મંજૂરી આપીએ છીએ. દરેક સંસ્કરણ હવે પરસ્પરાવલંબી હોવાથી, એક જ ફેરફાર પછીની તમામ આવૃત્તિઓમાં ફેરફારોની લહેર પેદા કરી શકે છે. આકૃતિ 1 અને 2 આ લહેરાતી અસરનું ઉદાહરણ દર્શાવે છે. વ્યાખ્યા કોઈપણ માહિતી માળખાને પૂર્વવર્તી સેટિંગમાં સુધારી શકાય છે. સામાન્ય રીતે માહિતી માળખામાં અમુક સમયગાળામાં કરવામાં આવેલા સુધારાઓ અને પ્રશ્નોની શ્રેણીનો સમાવેશ થાય છે. ધારો કે યુ = [યુટી1, યુટી2, યુટી3,., યુટીએમ] એ ટી1 થી ટીએમ સુધીની સુધારા કામગીરીનો ક્રમ છે જેમ કે ટી1 <ટી2 <. <ટીએમ. અહીં ધારણા એ છે કે આપેલ સમય t માટે વધુમાં વધુ એક કામગીરી કરી શકાય છે. આંશિક રીતે પાછલી અસરથી આપણે ડેટા સ્ટ્રક્ચરને આંશિક રીતે પાછલી અસરથી વ્યાખ્યાયિત કરીએ છીએ જો તે વર્તમાન સમયે અપડેટ અને ક્વેરી કામગીરી કરી શકે અને ભૂતકાળમાં નિવેશ અને કાઢી નાખવાની કામગીરીને ટેકો આપી શકે. આમ આંશિક રીતે પાછલી અસર માટે આપણે નીચેની કામગીરીઓમાં રસ ધરાવીએ છીએઃ દાખલ કરો (t, u): સૂચિ U માં સમય t પર નવી કામગીરી દાખલ કરો. કાઢી નાંખો (t): સૂચિ U માંથી સમય t પરની કામગીરીને કાઢી નાંખો. ઉપરોક્ત પાછલી સક્રિય કામગીરીઓને જોતાં, પ્રમાણભૂત નિવેશ કામગીરી હવે ઇન્સર્ટ (t, "ઇન્સર્ટ (x)") નું સ્વરૂપ હશે. ડેટા સ્ટ્રક્ચરના ઓપરેશનલ ઇતિહાસ પરના તમામ પૂર્વવર્તી ફેરફારો ઓપરેશનના સમયે અત્યાર સુધીની તમામ કામગીરીને સંભવિત રીતે અસર કરી શકે છે. ઉદાહરણ તરીકે, જો આપણી પાસે ti-1 <t <ti + 1 હોય, તો ઇન્સર્ટ (t, ઇન્સર્ટ (x)) ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન માહિતી માળખાની વર્તમાન સ્થિતિ (એટલે કે. : વર્તમાન સમયે ડેટા સ્ટ્રક્ચર) પછી એવી સ્થિતિમાં હશે કે ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન ઓપિનિયન દ્રશ્ય ઉદાહરણ માટે આકૃતિ 1 અને 2 જુઓ. જો આંશિક રીતે પાછલી સક્રિય કામગીરીઓ ઉપરાંત આપણે ભૂતકાળ વિશે પ્રશ્નો કરવા માટે પણ મંજૂરી આપીએ તો અમે ડેટા સ્ટ્રક્ચરને સંપૂર્ણપણે પાછલી સક્રિય તરીકે વ્યાખ્યાયિત કરીએ છીએ. આંશિક રીટ્રોએક્ટિવ મોડેલમાં પ્રમાણભૂત ઓપરેશન ઇન્સર્ટ (x) કેવી રીતે ઇન્સર્ટ (t ", ઇન્સર્ટ (x)") બને છે તે જ રીતે, સંપૂર્ણ રીટ્રોએક્ટિવ મોડેલમાં ઓપરેશન ક્વેરી (x) હવે ક્વેરી (t ", ક્વેરી (x)") સ્વરૂપ ધરાવે છે. રેટ્રોએક્ટિવ ચાલી રહેલ સમય રેટ્રોએક્ટિવ ડેટા સ્ટ્રક્ચર્સનો ચાલી રહેલો સમય માળખા પર કરવામાં આવેલી કામગીરીની સંખ્યા, m, કામગીરીની સંખ્યા r કે જે રેટ્રોએક્ટિવ કામગીરી કરવામાં આવે તે પહેલાં કરવામાં આવી હતી અને કોઈપણ એક સમયે માળખામાં n તત્વોની મહત્તમ સંખ્યા પર આધારિત હોય છે. ઓટોમેટિક રેટ્રો-એક્ટિવિટી ડેટા સ્ટ્રક્ચર્સના સંદર્ભમાં ઓટોમેટિક રેટ્રો-એક્ટિવિટી અંગેનો મુખ્ય પ્રશ્ન એ છે કે કોઈ સામાન્ય તકનીક છે કે જે કોઈપણ ડેટા સ્ટ્રક્ચરને કાર્યક્ષમ રેટ્રોએક્ટિવ સમકક્ષમાં રૂપાંતરિત કરી શકે છે કે નહીં. એક સરળ અભિગમ એ છે કે લાગુ થનારી પાછલી સક્રિય કામગીરી પહેલાં માળખામાં કરવામાં આવેલા તમામ ફેરફારો પર રોલ-બેક કરવું. એકવાર આપણે ડેટા સ્ટ્રક્ચરને યોગ્ય સ્થિતિમાં પાછું લાવ્યા પછી આપણે ઇચ્છતા ફેરફાર કરવા માટે પાછલી અસરની કામગીરી લાગુ કરી શકીએ છીએ. એકવાર ફેરફાર થઈ જાય પછી આપણે ડેટા સ્ટ્રક્ચરને તેની નવી સ્થિતિમાં મૂકવા માટે અગાઉ કરેલા તમામ ફેરફારોને ફરીથી લાગુ કરવા પડશે. જ્યારે આ કોઈપણ ડેટા સ્ટ્રક્ચર માટે કામ કરી શકે છે, ત્યારે તે ઘણીવાર બિનકાર્યક્ષમ અને નકામું હોય છે, ખાસ કરીને જ્યારે આપણે રોલ-બેક કરવાની જરૂર હોય તેવા ફેરફારોની સંખ્યા મોટી હોય છે. એક કાર્યક્ષમ પૂર્વવર્તી માહિતી માળખું બનાવવા માટે આપણે માળખાના ગુણધર્મો પર એક નજર નાખવી જોઈએ જેથી તે નક્કી કરી શકાય કે સ્પીડ અપ્સ ક્યાંથી પ્રાપ્ત કરી શકાય છે. આમ કોઈપણ માહિતી માળખાને કાર્યક્ષમ પૂર્વવર્તી પ્રતિરૂપમાં રૂપાંતરિત કરવાની કોઈ સામાન્ય રીત નથી. એરિક ડી. ડેમાઇન, જ્હોન આઈકોનો અને સ્ટીફન લેંગરમેન આ સાબિત કરે છે. સતત માહિતી માળખું સંદર્ભો માહિતી માળખાં પણ જુઓ