Тапсырыс-техникалық қызмет көрсету проблемасы - Order-maintenance problem

Жылы есептеу техникасы, тапсырыс-техникалық қызмет көрсету проблемасы сақтауды қамтиды толығымен тапсырыс берілген жиынтық келесі операцияларды қолдайтын:

  • кірістіру (X, Y), X-ті Y-тен кейін бірден жалпы тәртіпке енгізеді;
  • тапсырыс (X, Y), бұл X-тің жалпы тәртіпте Y-нен бұрын тұратынын анықтайды; және
  • жою (X), бұл X жиынтығынан алып тастайды.

Пол Дитц бұл мәселені шешуге арналған мәліметтер құрылымын алғаш рет 1982 ж. Енгізді.[1] Бұл деректер құрылымы қолдайды кірістіру (X, Y) жылы (in.) Үлкен O белгісі )амортизацияланған уақыт және тапсырыс (X, Y) тұрақты уақытта, бірақ жоюды қолдамайды. Афанасиос Цакалидис қалпына келтіруді қолдайтын дәл осындай шекаралары бар BB [α] ағаштарын қолданды және кірістіруді жақсарту және жою амортизацияланған уақыт жанама.[2] Dietz және Даниэль Слеатор 1987 жылы ең жаман жағдайға дейін жақсартуды жариялады.[3] Майкл Бендер, Ричард Коул және Джек Зито 2004 жылы айтарлықтай жеңілдетілген баламаларын жариялады.[4] Бендер, Финман, Гилберт, Копеловиц және Монтес 2017 жылы деортизацияланған шешімді жариялады.[5]

Тапсырыстарға қызмет көрсетуге арналған деректердің тиімді құрылымдары көптеген салаларда, соның ішінде қосымшаларға ие деректер құрылымының табандылығы,[6] графикалық алгоритмдер[7][8] және ақауларға төзімді деректер құрылымдары.[9]

Тізім белгілері

Тапсырысты қолдау мәселесіне байланысты проблема мынадатізім-таңбалау ақаулығы оның орнына тапсырыс (X, Y) шешім шешімінде бүтін сандар әлемінен белгілер тағайындалуы керек жиынның элементтеріне, егер X-ге Y-ден азырақ жапсырма берілсе, тек X-ге дейін, жалпы тәртіппен Y-ге дейін барады, сонымен қатар ол операцияны қолдауы керек. белгі (X) кез-келген X. түйінінің жапсырмасын қайтару тапсырыс (X, Y) жай салыстыру арқылы жүзеге асырылуы мүмкін белгі (X) және белгі (Y) Тізімді жапсыру мәселесінің шешімі дереу техникалық қызмет көрсету мәселесіне әкеледі. Шын мәнінде, техникалық қызмет көрсету мәселелерін шешудің көп бөлігі - бұл өнімділікті жақсарту үшін деректер құрылымы жанама деңгейімен тізімделген белгілерге қатысты шешімдер. Мұның мысалын төменде көретін боламыз.

Тиімділік үшін өлшемге сәйкес келеді элементтердің санымен шектелген деректер құрылымында сақталған. Бұл жағдайда ішіне кіру қажет проблема ретінде белгілі жиынтыққа қызмет көрсету немесе файлға тығыз дәйекті қызмет көрсету Проблема: Элементтерді файлдағы жазулар ретінде және белгілер әрбір элемент сақталатын мекен-жайларды қарастырыңыз. Одан кейін жинақталған массивті күтіп ұстау мәселесінің тиімді шешімі бос кеңістіктегі файлдың ортасына тиімді енгізулер мен жазбаларды жоюға мүмкіндік береді.[10][11][12][13][14] Бұл қолдануда деректердің құрылымын ескертпейтін соңғы қосымшалары бар[15]және жағдайдағы оңтайсыз сұрыптау.[16]

Алайда, кейбір шектеулер бойынша, сызықтық әлеммен тізімді таңбалау мәселесін шешуге енгізудің төменгі деңгейлері табылды[17] ал төменде біз полиномдық әлеммен шешім орындалуы мүмкін екенін көреміз уақыт.

Тізім белгілері және екілік іздеу ағаштары

Тапсырыстарға қызмет көрсету парағында сипатталғандай жол белгілерінің мысалы.
Осы екілік ағаштағы X-тің жол белгісі 0221 құрайды, бұл 25 бүтін санының 3 негізі.

Сандағы көпмүшелік өлшемді әлемдегі тізімді белгілеу жалпы тәртіптегі элементтер а-да тепе-теңдікті сақтау проблемасына байланысты екілік іздеу ағашы. Екілік іздеу ағашының әрбір X түйіні ағаштың тамырынан бастап оның жолына сәйкес келетін антинегрмен жанама түрде белгіленетініне назар аударыңыз. Бұл бүтін санды алып тастаңыз жол белгісі және оны келесідей анықтаңыз. Келіңіздер осы жолда солға және оңға түсу реті болуы керек. Мысалға, егер Х - ағаштың тамырынан шыққан оң баланың оң баласы болса. Содан кейін X бүтін санмен белгіленеді негіз 3 өкілдігі кез келген жағдайды ауыстыру арқылы беріледі жылы әр жағдайдың орнын 0-ге ауыстырады жылы 2-мен және алынған жолдың соңына 1 қосыңыз. Сонда алдыңғы мысалда X жол белгісі is0221 болады3 Бұл 10-негізде 25-ке тең. Жол белгілері ағаштардың ретін сақтайды және сол сияқты тұрақты уақыттағы сұраныстарға жауап беру үшін қолданыла алады.

Егер ағаштың биіктігі болса онда бұл бүтін сандар Әлемнен келеді . Егер ағаш болса өзін-өзі теңестіру биіктіктен аспайтын биіктікті сақтайды онда ғаламның өлшемі көпмүшелік болып табылады .

Сондықтан тізімді таңбалау мәселесін тізімдегі элементтерде теңгерімделген екілік іздеу ағашын сақтау арқылы шешуге болады, әр түйінге жол белгілері көбейеді. Алайда, ағаштың қайта теңдестірудің кез-келген әрекеті осы жол белгілерін де жаңартуға мәжбүр болатындықтан, бұл деректердің әрқайсысы теңдестірілген ағаш құрылымының құрылымы бұл қосымшаға сәйкес келмейді. Мысалы, түйіннің өлшемі кіші ағашпен айналатындығын ескеріңіз., оны әдеттегі жағдай бойынша тұрақты уақытта жасауға болады, талап етеді жол белгілерінің жаңартулары. Жеке емес, егер түйіннің айналуы тамыр болса, айналу бүкіл ағаштың өлшемі бойынша сызықтық уақытты алады. Осы уақыт аралығында бүкіл ағашты қалпына келтіруге болады. Төменде қайта теңдестіру кезінде белгілердің жаңартуларының сәйкессіз санын тудыратын, өздігінен теңдестірілген екілік іздеу ағашының деректер құрылымдары бар екенін көреміз.

Мәліметтер құрылымы

Тізімді таңбалау мәселесін элементтер саны бойынша полименомдық әлеммен шешуге болады күшейту арқылы аешкі ағашы жоғарыда сипатталған жол белгілерімен. Scapegoattrees барлық теңгерімдеуді ағаштарды қалпына келтіру арқылы жасайды. Қабылданғаннан бері кіші ағашты қалпына келтіруге уақыт, сол кіші ағаштың атын өзгерту қайта қалпына келтірілгеннен кейін теңгерімдеу операциясының асимптотикалық өнімділігі өзгермейді.

Тапсырыс

X және Y екі түйінін ескере отырып, тапсырыс (X, Y) олардың жол белгілерін салыстыру арқылы олардың ретін анықтайды.

Кірістіру

X үшін жаңа түйін және Y түйініне нұсқағыш берілген, кірістіру (X, Y) X-ті Y-ден кейін әдеттегідей енгізеді. Егер теңгерімдеу операциясы қажет болса, күндізгі ешкі ағашы үшін әдеттегідей тиісті кіші ағаш қайта салынады. Содан кейін бұл кіші ағаш тереңнен өтіп, оның әр түйінінің жол белгілері жаңартылады. Жоғарыда сипатталғандай, бұл асимптотикалық түрде әдеттегідей қалпына келтіру операциясынан көп уақытты қажет етпейді.

Жою

Жою кірістіруге ұқсас орындалады. Х түйініне байланысты, жою (X) әдеттегідей Х-ны жояды. Кез-келген қайта құру операциясы қайта қалпына келтірілген ағаштың қайта таңбалануымен жалғасады.

Талдау

Жол белгілерімен толықтырылған күнкөріс ағашының тепе-теңдік көрсеткіштері туралы жоғарыдағы аргументтен, бұл деректер құрылымын кірістіру және жою өнімділігі қарапайым скотин ағашына қарағанда асимптотикалық емес. Содан кейін кірістіру мен жою қажет болғандықтан қарақұстардағы амортизацияланған уақыт, бұл мәліметтер құрылымына сәйкес келеді.

Сонымен қатар, α параметрі бар күнкөріс ағашы ең жоғары деңгейге ие болғандықтан , жолдың жапсырмасының ең үлкен мөлшері . Типтік мәні үшін онда жапсырмалар ең көп дегенде болады.

Әрине, екі түйіннің ретін олардың белгілерін салыстыра отырып, тұрақты уақытта анықтауға болады. Жақын тексеру көрсеткендей, бұл үлкен мәнге ие . Нақтырақ айтсақ, егер олар машинаның сөзінің өлшемі болса бит, содан кейін ол көбіне шешілуі мүмкін түйіндер . Демек, ғаламның ең үлкен мөлшері бар және жапсырмаларды тұрақты (ең көп дегенде) санымен ұсынуға болатын етіп ) биттер.

Тізім жапсырмасында төменірек

Элементтер санындағы ғаламдық полиноммен тізімді таңбалау мәселесінің кез-келген шешімі кірістіру мен жоюдың көрсеткіштерінен жақсы болмайтыны көрсетілген. .[18] Содан кейін тізімге таңбалау үшін жоғарыдағы шешім асимптотикалық оңтайлы болып табылады. Айтпақшы, бұл да дәлелдейді Ешкі ағашына кірістіру немесе жою амортизацияланған теңгерімдеу уақытының төменгі шекарасы.

Алайда, бұл төменгі шек тапсырыс-сақтауға қатысты проблемаларға қолданылмайды және жоғарыда айтылғандай, барлық тапсырыстарды қадағалау операцияларында тұрақты уақыт сипаттамаларын беретін мәліметтер құрылымдары бар.

O (1) жанама жолмен амортизацияланған кірістіру

Индекция - бұл мәліметтер құрылымында қолданылатын әдіс, онда проблема тиімділікті арттыру мақсатында деректер құрылымының бірнеше деңгейіне бөлінеді. Әдетте, өлшем мәселесі бөлінеді көлемдегі мәселелер . Forexample, бұл әдіс қолданылады y-тез тырысады. Бұл стратегия сонымен қатар жоғары амортизацияланған уақытқа дейін жоғарыда сипатталған мәліметтер құрылымын кірістіруді және жоюды жақсарту үшін жұмыс істейді. Infact, бұл стратегия тізім-этикеткалық проблеманы кез келген шешуге жұмыс істейді амортизацияланған енгізу және жою уақыты.

Тапсырысты қолдау мәселесін ағаш негізінде шешуде жанама бейнелеу.
Жанама түрде тапсырыс беруді қамтамасыз ететін мәліметтер құрылымы. Жалпы тапсырыс элементтері сақталады көлемінің сабақтас тізімдері , олардың әрқайсысының күнәсінің ағашында өкілі бар.

Деректердің жаңа құрылымы тым ұлғайған немесе өте кішірейген сайын толығымен қалпына келтіріледі. Келіңіздер соңғы тапсырыс қайта жасалған кездегі жалпы тапсырыс элементтерінің саны болуы керек. Деректер құрылымы инвариантты болған сайын қайта құрылады кірістіру немесе жою арқылы бұзылады. Қайта құру сызықтық уақытта жүргізілуі мүмкін болғандықтан, бұл енгізулер мен жоюдың амортизацияланған жұмысына әсер етпейді.

Қайта құру кезінде жалпы тәртіптің элементтері бөлінеді әрқайсысының өлшемі . Жол белгілері бар саябақ ағашы ішкі тізімдердің әрқайсысын олардың бастапқы тізім ретімен көрсететін түйіндер жиынтығында құрылады. Әрбір қосалқы тізім үшін оның элементтерінің тізімі бір-бірімен байланыстырылған, әр элементпен бірге ағаштағы өкіліне, сонымен қатар жергілікті бүтін белгіге арналған apointer элементі сақталады. Бұл жергілікті этикеткалар ағашта қолданылатын белгілерге тәуелсіз және бірдей ішкі тізімнің кез келген екі элементін салыстыру үшін қолданылады. Қосымша тізімнің элементтеріне жергілікті белгілер беріледі , олардың бастапқы тізім ретімен.

Тапсырыс

X және Y ішкі тізімнің түйіндерін ескере отырып, тапсырыс (X, Y) Алдымен екі түйіннің samesublist тізімінде бар-жоғын тексеру арқылы жауап алуға болады. Олай болса, олардың орналасуын жергілікті тауар белгілерін салыстыру арқылы анықтауға болады. Әйтпесе олардың қазынасындағы өкілдерінің жол белгілері салыстырылады. Бұл тұрақты уақытты қажет етеді.

Кірістіру

X үшін қосалқы тізімнің жаңа түйіні және ішкі тізбектің Y сілтемесі берілген,кірістіру (X, Y) X қосымшасы Y тізімінен кейін бірден Y қосады. Егер қосалқы тізімнің соңына X енгізілсе, оған жергілікті таңба беріледі. , қайда жергілікті Y таңбасы; әйтпесе, егер мүмкін болса, ол екі көршісінің жергілікті этикеткаларының орташа деңгейімен белгіленеді, бұл оңай жағдай тұрақты уақытты алады.

Қиын жағдайда, X-нің көршілері жергілікті жапсырмаларға ие және ішкі тізімді қайта құру керек. Алайда, бұл жағдайда кем дегенде ол бірінші салынғаннан бастап қосалқы тізімге элементтер қосылды. Сонда біз оны қалпына келтіру үшін уақыттың сызықтық мөлшерін жұмсай аламыз, мүмкін оны енгізудің амортизациялық құнын өзгертпестен кіші қосалқы тізімдерге бөлеміз.

Егер қосалқы тізімде өлшем болса содан кейін біз оны бөлеміз көлемінің сабақтас тізімдері , әр жаңа қосалқы тізімді жоғарыда сипатталғандай жергілікті түрде белгілеу және ішкі тізімнің әрбір элементін ағашқа енгізілетін жаңа өкіл түйінге бағыттау. Ол алады қосалқы тізімдерді құру уақыты. Біз бос қосалқы тізімдерге жол бермегендіктен, ең көп олардың ішінен және сол арқылы өкіл ағашқа енгізілуі мүмкін уақыт. Демек, бұл қажет барлық жаңа өкілдерді ағашқа енгізу уақыты.

Жою

Жойылатын X қосалқы тізім түйіні берілген, жою (X) жай уақытта X-ті қосалқы тізімнен алып тастайды. Егер бұл қосалқы тізімді бос қалдырса, онда біз сол тізімнің өкілін ағаштан алып тастауымыз керек. Ең болмағанда ол салынғаннан бері қосалқы тізімнен элементтер жойылды жоюдың амортизациялық құнын өзгертпестен, өкілден алып тастауға кететін уақыт.

Сондай-ақ қараңыз

Әдебиеттер тізімі

  1. ^ Dietz, Paul F. (1982), «Байланысты тізімдегі тәртіпті сақтау», Есептеулер теориясына арналған 14-ші ACM симпозиумының материалдары (STOC '82), Нью-Йорк, Нью-Йорк, АҚШ: ACM, 122–127 б., дои:10.1145/800070.802184, ISBN  978-0897910705.
  2. ^ Цакалидис, Афанасиос К. (1984), «Жалпыланған тізбектегі тәртіпті сақтау», Acta Informatica, 21 (1): 101–112, дои:10.1007 / BF00289142, МЫРЗА  0747173.
  3. ^ Диц, П .; Слеатор, Д. (1987), «Тізімдегі тәртіпті сақтаудың екі алгоритмі», Есептеулер теориясы бойынша 19-жылдық ACM симпозиумының материалдары (STOC '87), Нью-Йорк, Нью-Йорк, АҚШ: ACM, 365–372 бет, дои:10.1145/28395.28434, ISBN  978-0897912211. Толық нұсқасы,Техникалық. CMU-CS-88-113 нұсқасы, Карнеги Меллон университеті, 1988 ж.
  4. ^ А.Бендер, Майкл және Коул, Ричард және Зито, Джек. (2004). Тізімдегі тәртіпті сақтаудың екі жеңілдетілген алгоритмі. https://www.researchgate.net/publication/2865732_Two_Simplified_Algorithms_for_Maintaining_Order_in_a_List 2019-06-14 алынды
  5. ^ «Файлға техникалық қызмет көрсету: Күмән болған кезде, орналасуын өзгертіңіз!», М.Бендер, Дж.Финман, С.Гилберт, Т.Копеловиц, П.Монтес. Жиырма сегізінші ACM-SIAM жыл сайынғы дискретті алгоритмдер симпозиумының материалдары. eISBN  978-1-61197-478-2. https://doi.org/10.1137/1.9781611974782.98 2019-06-15 алынды
  6. ^ Дрисколл, Джеймс Р .; Сарнак, Нил; Слеатор, Даниэль Д.; Тарджан, Роберт Е. (1989), «Мәліметтер құрылымын тұрақты ету», Компьютерлік және жүйелік ғылымдар журналы, 38 (1): 86–124, дои:10.1016/0022-0000(89)90034-2, МЫРЗА  0990051.
  7. ^ Эппштейн, Дэвид; Галил, Зви; Итальяно, Джузеппе Ф.; Nissenzweig, Amnon (1997), «Спарсификация - динамикалық график алгоритмдерін жылдамдату әдісі», ACM журналы, 44 (5): 669–696, дои:10.1145/265910.265914, МЫРЗА  1492341.
  8. ^ Катриэль, Ирит; Бодлаендер, Ханс Л. (2006), «Онлайн топологиялық тапсырыс», Алгоритмдер бойынша ACM транзакциялары, 2 (3): 364–379, CiteSeerX  10.1.1.78.7933, дои:10.1145/1159892.1159896, МЫРЗА  2253786.
  9. ^ Ауманн, Йонатан; Бендер, Майкл А. (1996), «Ақаулыққа төзімді деректер құрылымы», Информатика негіздері бойынша 37-ші жыл сайынғы симпозиум материалдары (FOCS 1996), 580-589 б., дои:10.1109 / SFCS.1996.548517, ISBN  978-0-8186-7594-2.
  10. ^ Итай, Алон; Конхейм, Алан; Роде, Майкл (1981), «Басым кезектердің сирек кестесі», Автоматтар, тілдер және бағдарламалау: Сегізінші коллоквиум акры (Акко), Израиль 13-17 шілде 1981 ж., Информатикадағы дәрістер, 115, 417-431 б., дои:10.1007/3-540-10843-2_34, ISBN  978-3-540-10843-6.
  11. ^ Уиллард, Дэн Э. (1981), Блокталған дәйекті файлдарға жазбаларды енгізу және жою, TM81-45193-5 техникалық есебі, Bell Laboratories.
  12. ^ Уиллард, Дэн Э. (1982), «Динамикалық ортада дәйекті файлдарды жүргізу (кеңейтілген реферат)», Есептеу теориясы бойынша 14-ACM симпозиумының материалдары (STOC '82), Нью-Йорк, Нью-Йорк, АҚШ: ACM, 114–121 бет, дои:10.1145/800070.802183, ISBN  978-0897910705.
  13. ^ Уиллард, Дэн Э. (1986), «Тығыз тізбекті файлдарға жазбаларды енгізу мен жоюдың ең жаман алгоритмдері», Деректерді басқару бойынша 1986 жылғы ACM SIGMOD Халықаралық конференциясының материалдары (SIGMOD '86), SIGMOD Record 15 (2), Нью-Йорк, Нью-Йорк, АҚШ: ACM, 251–260 б., дои:10.1145/16894.16879, ISBN  978-0897911917.
  14. ^ Уиллард, Дэн Э. (1992), «Ең жақсы жағдайда дәйекті реттелген файлға кірістіру мен жоюды қоюдың тығыздығын басқару алгоритмі», Ақпарат және есептеу, 97 (2): 150–204, дои:10.1016 / 0890-5401 (92) 90034-D.
  15. ^ Бендер, Майкл А .; Демейн, Эрик Д.; Фарач-Колтон, Мартин (2005), «Кэшті ескермейтін ағаштар» (PDF), Есептеу бойынша SIAM журналы, 35 (2): 341–358, дои:10.1137 / S0097539701389956, МЫРЗА  2191447.
  16. ^ Франчесчини, Джанни; Гефферт, Вилиам (2005), «O бар орнында сұрыптау (n журналn) салыстыру және O (n) қозғалады », ACM журналы, 52 (4): 515–537, arXiv:cs / 0305005, дои:10.1145/1082036.1082037, МЫРЗА  2164627.
  17. ^ Дитц, Пол Ф.; Чжан, Джу (1990), «монотонды тізімді таңбалаудың төменгі шектері», SWAT 90 (Берген, 1990), Информатикадағы дәрістер, 447, Берлин: Шпрингер, 173–180 бет, дои:10.1007/3-540-52846-6_87, ISBN  978-3-540-52846-3, МЫРЗА  1076025.
  18. ^ Дитц, Пол Ф.; Сейферас, Джоэл I .; Чжан, Джу (1994), «Онлайн монотонды тізімді таңбалаудың төменгі шекарасы», Алгоритм теориясы - SWAT '94 (Орхус, 1994), Информатикадағы дәрістер, 824, Берлин: Шпрингер, 131–142 б., дои:10.1007/3-540-58218-5_12, ISBN  978-3-540-58218-2, МЫРЗА  1315312.

Сыртқы сілтемелер