Багасса гвианская и Багасса липолистная | Tatajuba | Bagassa guianensis Aubl. и B. tiliaefolia (Desv.) R. Ben. | Moraceae | |
Багряник японский | Katsura | Carcidiphyllum japonicum Sieb & Zucc. | Trochodendraceae | |
Багтикан | Bagtican | Parashorea malaanonan (Bclo) Merr. syn. P. plicata Brandis | Dipterocarpaceae | |
Бакаутовое, железное, дерево | Lignum vitae | Guiacum spp. | Zygophyllaceae | |
Баланокарпус Хейми | Chengal | Balanocarpus heimii King. | Dipterocarpaceae | |
Бальза (бальса) | Balsa | Ochroma pyramidale Urb. Syn. O. lagopus Sw., O. bicolor Rowlee | Bombacaceae | |
Бальфуродендрон | Pau marfim | Balfourodendron riedelianum Engl. | Rutaceae | |
Бамбук | Bamboo | — | Graminaceae | |
Барбарис обыкновенный | — | Berberis vulgaris L. | Berberidaceae | |
Беильшмиедия Тава | Tawa | Beilschiedia tawa B. et H. f. | Lauraceae | |
Беильшмиедия, виды | Kanda | Beilschmiedia spp. | Lauraceae | |
Берёза бумажная | Paper birch | Betula papyrifera Marsh. | Betulaceae | |
Берёза даурская, чёрная | — | Betula davurica Pall. | Betulaceae | |
Берёза железная, Шмидта | — | Betula schmidtii Regel. | Betulaceae | |
Берёза жёлтая | Yellow birch | Betula alleghaniensis Britt. syn B. lutea Michx. (преимущественно) и B. lenta L. | Betulaceae | |
Берёза каменная, Эрмана | — | Betula ermanii Cham. | Betulaceae | |
Берёза Максимовича | Birch, japanese | Betula maximowicziana Regel. | Betulaceae | |
Берёза плакучая, повислая, бородавчатая | — | Betula pendula Roth. | Betulaceae | |
Берёза пушистая | — | Betula pubescens Ehrh. | Betulaceae | |
Берёза ребристая | — | Betula costata Trautv. | Betulaceae | |
Берёза, виды | Birch, european | Betula spp. | Betulaceae | |
Бересклет бородавчатый | — | Euonymus verrucosa Scop. | Celastraceae | |
Бересклет европейский | — | Euonymus europaeua L. | Celastraceae | |
Бересклет карликовый | — | Euonymus nana Bieb. | Celastraceae | |
Бересклет крылатый | — | Euonymus alata (Thunb.) Sieb. | Celastraceae | |
Берлиния, виды | Berlinia | Berlinia spp., включая B. bracteosa Benth, B. confusa IToyle и B. grandiflora Hutch & Dalz. | Leguminosae | |
Биота восточная, туя | — | Biota orientalis (L.) Endl. | Cupressaceae | |
Бирсонима мартиникская | Mauricif | Byrsonima martinicensis Kr. & Urb. | Malpighiaceae | |
Бирючина обыкновенная | — | Ligustrum vulgare L. | Oleaceae | |
Битис | Bitis | Sapotaceae spp. | Sapotaceae | |
Бовдичия Нитида | Sucupira | Bowdichia nitida Benth. | Leguminosae | |
Бомбакс индийский | Bombax indian | Bombax malabaricum, D. C. | Malvaceae | |
Боярышник колючий | — | Crataegus oxyacantha L. | Rosaceae | |
Боярышник однокосточковый | — | Crataegus monogyna Jasq. | Rosaceae | |
Боярышник сибирский, кроваво-красный | — | Crataegus sanguinea Pall. | Rosaceae | |
Брахилэна Хатчинса | Muhuhu | Brachylaena hutchinsii Hutch. | Compositae | |
Брахистегия Фрэлиана | Zebrano | Brachystegia fleuryana Chev. | Leguminosae | |
Брахистегия, виды | Okwen | Brachystegia spp., включая B. eurycoma Harms., B. leonensis Hutch & Burtt Davy, B. nigerica Hoyle & A. P. Jones | Leguminosae | |
Брийа эбеновая | Cocuswood | Brya ebbnus DC. | Leguminosae | |
Бросимум Параэнсе, Феролия гвианская | Satine | Brosimum paraense Hub. | Moraceae | |
Бросимум полезный | Sande | Brosimum utile (HBK) Pittier | Moraceae | |
Бузина чёрная | — | Sambucus nigra L. | Caprifoliaceae | |
Бук восточный или кавказский | — | Fagus orientalis Lipsky. | Fagaceae | |
Бук крупнолистный | Beech, american | Fagus grandifolia Ehrh. | Fagaceae | |
Бук лесной европейский | Beech, european | Fagus sylvatica | Fagaceae | |
Бук лесной, или европейский | — | Fagus sylvatica L. | Fagaceae | |
Бук округлозубый, японский | Beech, japanese | Fagus crenata Bl. и родственные виды | Fagaceae | |
Бульнезия древовидная | Verawood | Bulnesia arborea Engl. | Zygophyllaceae | |
Бундук двудомный, или канадский, кентуккийское кофейное дерево | Kentucky coffee tree | Gymnocladus canadensis Lam. syn. G. dioica Koch | Leguminosae | |
Буркея африканская | Makarati | Burkea africana Hook | Leguminosae | |
Бурсера симаруба | Almacigo | Bursera simaruba (L.) Sarg. | Burseraceae |
Бабако | Багряник |
Багрянник | Баккорея |
Баккорея вкусная | Баккорея Мотли |
Баобаб | Бархат |
Бархат амурский | Белая сапота |
Бергамот | Берёза |
Берёза белая китайская | Берёза бумажная |
Берёза вишнёвая | Берёза граболистная |
Берёза плосколистная | Берёза повислая |
Берёза пушистая | Берёза чёрная |
Берёза Юнга | Бересклет |
Бигнай | Билимби |
Бириба | Бирманский виноград |
Бирючина | Блигия |
Боярышник азароль | Боярышник вееровидный |
Боярышник даурский | Боярышник джунгарский |
Боярышник Дугласа | Боярышник жёлтый |
Боярышник зелёномясый | Боярышник зелёный |
Боярышник крупноколючковый | Боярышник ложносомнительный |
Боярышник Максимовича | Боярышник мягковатый |
Боярышник петушья шпора | Боярышник понтийский |
Боярышник сочный | Боярышник тёмно-кровавый |
Боярышник точечный | Боярышник урновидный |
Боярышник шерстистый | Боярышник Эльвангера |
Брагея | Бразильский орех |
Брахихитон наскальный | Бузина |
Бук | Бук восточный |
Бук европейский | Бундук |
Бунхозия серебристая |
какие бывают штукатурки, виды работ
Общие сведения о штукатурных работах
Штукатурные работы
— это работы по нанесению выравнивающих и защитных покрытий. Эти покрытия могут быть на основе вяжущего гидравлического и воздушного затвердения. Они наносятся на наружные и внутренние поверхности элементов строительных конструкций. Штукатурка нужна в первую очередь, чтобы скрыть погрешности кладки, чтобы закрыть швы. То есть это просто декорирование. Вторая задача штукатурки более практическая. Она служит как изоляция от проникновения влаги, улучшает звуко- и теплоизоляционные свойства стены. Если же поверхность деревянная, то штукатурка
служит также и противопожарной защитой.
Декоративная штукатурка в нашем каталоге:
Выделяют два вида штукатурных работ
— наружные и внутренние.
Штукатуркой отделываются стены из кирпича, из мелкоразмерных иных материалов, из крупнопористого беспесчаного камня, если без штукатурки воздухопроницание этих стен не соответствует нормам, которые на данный момент определены СНиПАми. Так же штукатурку применяют при ремонте зданий, стены которых ранее были оштукатурены; штукатурку применяют, если разные участки сделаны из различных материалов ; для отделки оконных и дверных откосов, цоколей; штукатурку можно использовать как защиту от огня, заменяя ей облицовку из несгораемых материалов, если таковые применить невозможно или же просто нецелесообразно. Штукатуркой также отделываются стены рядом с вентиляционными или же дымовыми отверстиями.
История состава штукатурки и сухих строительных смесей
В начале XX века сухими строительными смесями (сокращенно — ССС) назывались смеси из вяжущего вещества (это могла быть известь, цемент либо гипс) и песка. Их называли «гарцовка» Эти смеси могли наноситься только толстым слоем – 10-20 мм — потому что если слой был более тонким, то материал отсасывал воду и смеси становились непластичными, с ними было невозможно дальше работать, штукатурка просто сыпалась. Так же их минусом было то, то цементно-песчаные смеси хороши были при сжатии, но они плохо работали на изгиб, растяжение. Они так же плохо сцепливались с маловпитывающими основаниями.
Ситуация кардинально изменилась в 1912 году в связи с тем, что в Германии химическим концерном «Хехст» был найден способ получения целлюлозы, которая очень хороша впитывала и удерживала воду.
И уже в 20-годах прошлого века началось массовое производство эфиров целлюлозы, которые на данный момент являются основным составляющими СС.
Инструменты для нанесения штукатурки
Давайте рассмотрим инструменты, которые пригодятся вам при оштукатуривании в домашних условиях. В первую очередь вам понадобится полутерок (рис.1), чтобы ровнять и уплотнять штукатурный намет. Он состоит из полотна и ручки. Для его производства чаще всего используют пенополиуретан. Теркой вы затираете поверхность штукатурного слоя. Иногда для этой цели используется опять же полутерок, но уже металлический или резиновый. Или же затирочная кельма (рис.2) Чтобы перенести штукатурку из емкости, в которой мы её замешали, мы используем сокол (рис.3). Им же мы разравниваем слой штукатурки.
Для накладывания раствора на оштукатуриваемую поверхность мастер может использовать штукатурную кельму, штукатурную лопатку либо мастерок. Они могут быть различными по форме:
- Трапециевидная (рис.4) . Это кельма отделочника
- Треугольная (рис.5). Это кельма бетонщика.
- Каплевидная (рис.6).Это кельма штукатура.
- Угловая кельма. (рис.7) Эта кельма используется для отделки внутренних и наружных углов.
- Для того, чтобы заделать тонкие швы, мастер использует шовную кельму.(рис.8)
- Если поверхность слишком большая и раствора нужно сразу нанести много, то можно использовать штукатурный ковш.(рис.9)
- У инструмента, который по форме напоминает лавровый лист, есть несколько названий — отрезовка, штукатурный нож, малая штукатурная лопатка.(рис.10) Это полотно, которое используется для того, чтобы расшить швы, подправить их. Так же им очищают раковины и трещины.
- Такие инструменты как скребок и шпатель (рис.11) мастер использует, чтобы освободить поверхность от покрытия, которое было нанесено на него ранее. К тому же шпатель используется для нанесения шпатлевки.
Если нужно нанести грунтовку или другой раствор, мастер может использовать валики, кисти и еще много разных инструментов. Так же в работе не обойтись без ящика для раствора, шнура, отвеса, укрепляющего фасадного уголка, строительного гидравлического уровня, сетки из стекловолокна и многого другого.
Штукатурки на различных вяжущих
Чтобы считаться хорошей, минеральная штукатурка должна обязательно отвечать ряду требований:
- Она должна хорошо прилегать к основе.
- Плохо впитывать воду и хорошо её отталкивать.
- У неё должна быть высокая степень паронепроницаемости.
- Она должна быть устойчивой к механическим и атмосферным воздействиям .
В зависимости от того, какие вяжущие используются, можно выделить разные виды штукаторок: известковые, цементные, гипсоизвестковые и гопсовые. В ДИН 1850 существует следующее определение штукатурки «штукатуркой считается покрытие, наносимое в виде строительного раствора на стены и потолки в один или несколько слоев определенной толщины, которое достигает своих окончательных свойств только после отверждения на основе».
Штукатурные слои
Монолитная штукатурка состоит из нескольких слоев. Их технологическая последовательность зависит от вида штукатурки. Первый слой называется слоем обрызга. Он наносится обязательно штукатурным ковшом и составляет примерно 8-9 мм. Не стоит наносить этой слой штукатурной кельмой, потому что в этом случае не достигается нужное сцепление с основой. Этот слой по густоте должен быть, примерно, как густая сметана. Наносится он резким выбрасыванием раствора из штукатурного ковша с одинакового расстояния. Второй слой наносится после того, как схватился обрызг . Этот слой называется грунтом. Он наносится так же, как и обрызг выбросом из штукатурного ковша. Но этот слой должен быть боле густым, тестообразным. Его толщина не должна превышать 20 мм, так как если слой будет толще, он не будет хорошо держаться. После нанесения раствора излишки нужно убрать. Убирается лишний раствор правилом. Движения производятся снизу вверх зигзагообразно. Обычно одного выравнивания недостаточно. Лишний раствор, который собирается на правиле, сбрасывается обратно в ящик и выравнивание продолжается. Начисто выравнивание производится полутерком , пока поверхность не станет почти гладкой. Не идеально гладкой, потому что на ней еще должен будет держаться накрывочный слой. Если грунтовочный слой должен быть не толстым, 5-6 мм, то его не набрасывают ковшом, а наносят полутерком. Имейте виду, что если поверхность основы гладкая и твердая, то наносить полутерком не стоит, потому что нанесенный слой сцепливается с основой хуже, чем наброшенный. Последний слой — накрывочный. Его толщина не более 2 мм и он наносится на шероховатый грунтовочный слой после схватывания последнего. Потом его аккуратно затирают и заглаживают. Раствор мастер накладывает кельмой на деревянный полутерок и уже им наносит на поверхность грунтовочного слоя. Раствор наносят зигзагообразными движениями, стараясь нанести равномерно по всей поверхности, насколько это возможно затирают полутерком, а потом разглаживают стальными или пластмассовыми терками. Затирать накрывочный слой следует, пока он еще влажный. Для этого терка плотно прижимается к поверхности и затирка производится круговыми движениями. Лишнее срезается и попадает в углубления, в которых раствора не хватало. Накрывочный слой является завершением, поэтому затирка должна быть выполнена тщательно. Можно провести в конце мокрой щеткой. Существует так же так называемый декоративный накрывочный слой. Его толщина не более 7 мм. Его нанесение производится широким шпателем либо как вариант швейцарской теркой (рис.12).
Подготовка поверхностей под штукатурку
Чтобы штукатурка была прочной и держалась долго, в первую очередь надо идеально подготовить поверхность основы. Все работы нацелены на то, чтобы увеличить адгезию . Сделать это можно разными способами:
- Можно применить механический способ (нарубить поверхность).
- Можно физико-химический (прогрунтовать)
- Можно создать несущий каркас (набивка драни)
Но сначала следует оценить качество уже существующего основания.
Новые каменные, кирпичные и бетонные поверхности
Если кладка шероховата и видно, что на ней есть пыль, её нужно почистить. Для этого вы можете обмести жесткой метлой, промыть водой. Швы, если они заполнены раствором, надо очистить от него минимум на 1 см. Когда поверхность высохнет от воды, можно нанести на неё проникающую грунтовку. Если вам придется иметь дело с бетонными элементами, то их достаточно очистить от пыли и промыть водой. После этого стоит либо нанести грунтовку либо же насечь поверхность. В том случае, если бетон был выполнен в строганной деревянной опалубке или металлической, то насекать его необходимо. Особо грязные места придется зачистить стальными щетками, если возможно, их можно просто срубить и нанести специальную грунтовку для бетона «Бетон-контакт» Эта грунтовка обладает очень высокой адгезионной способностью, поэтому штукатурку можно наносить прямо на неё. Обязательно подвергаются механическому способу обработки и поверхности, которые были неоштукатуренны больше года и сильно загрязнены. После нарубки их тоже стоит прогрунтовать. Особое внимание надо уделить местам, загрязненным глиной или окрашенным масляной краской. Если же поверхность ранее уже была оштукатурена, то следует её тщательно осмотреть. Если при простукивании вы слышите «бубнящий» звук, значит, штукатурка в этом месте отслоилась. Обязательно удалите её. Простые царапины на поверхности наоборот стоит оставить. Они увеличат адгезионную способность поверхности. Если вы заметили, что на каком-то участке развились микроорганизмы, обработайте этот участок с особой тщательностью. Если повреждения незначительные — просто почистите место металлической щеткой и промойте водой. Если они слишком сильные — удалите этот участок штукатурки полностью. В любом случае вы должны обработать пораженный участок специальным фунгипидным препаратом.
Подготовка деревянных поверхностей
Если вам придется штукатурить деревянную поверхность, то сначала подготовьте дрань для неё. Дрань это основа, сделанная из деревянных реек толщиной 3 -5 мм. Дрань разделяют на простильную (нижнюю) и выходную (верхнюю).Более толстая и ровная дрань пойдет для выходной, для нижней годится и тонкая, кривая или узкая. Ширина драни должна быть 15-20 мм. Не больше и не меньше. Потому что если дрань будет тоньше 15, она будет расщепляться при забивке гвоздей, если же шире 20мм, то она может размокнуть, деформироваться и испортить штукатурку. Толщина простильной драни не должна быть меньше 3 мм, чтобы при наложении на неё выходной драни между ними образовались пустоты. Эти пустоты впоследствии заполнятся раствором, который хорошо сцепится с выходной дранью. Не стоит применять и особо толстую дрань, ведь чем толще дрань, тем толще должен быть слой штукатурки. Под углом 45 гр. к полу сначала прибиваются простильные ряды, на них прибивают выходную дрань. Угол наклона сохраняется таким же. Дрань дополнительно скрепляет отдельные доски деревянных поверхностей , тем самым увеличивая жесткость стены. Расстояние между простильными рядами драни рекомендуется делать на стенах 45 х 45 мм, на потолках 40 х 40 мм. Поверх драни на выступающих углах деревянной конструкции укрепите полоски стальной сетки , ширина которой должна быть 15-20см, чтобы укрепить углы. Если оштукатуриваемые поверхности были выполнены из разных материалов, то следует обить места их сопряжения металлической сеткой. Сетка должна заходить на обе стороны на 4-5 см.
Разметка поверхностей
Естественно, оштукатуренная поверхность должна быть ровной. Чтобы этого добиться, применяются так называемые маяки. Это направляющие, выполненные из гипсового раствора, которые накладываются на поверхность. Делаются маяки следующим образом. По углам стены снизу и сверху забивают гвозди, которые отступают от поверхности стены на 3 см. Затем между этими гвоздями натягивают шнуры по горизонтали, по вертикали и по диагонали. Шнур должен отступать от поверхности на 18 мм но ни в одном месте он не должен приближаться к стене ближе чем на 8 мм. Под шнуром делают штукатурные марки высотой от 15 мм и выше. При провешивании стены первый гвоздь забивают на расстоянии 30-40 см от угла и потолка. Над поверхностью стены гвоздь должен выступать на высоту, равную толщине будущей штукатурки. К шляпке гвоздя прикладывается и подвешивается отвес. В нижней части стены на высоте 250 мм от пола забивают второй гвоздь так, чтобы шляпка его касалась шнура. В зависимости от того, насколько высокое помещение, вдоль шнура забивают промежуточные гвозди. Таким же образом поступают на противоположной стороне стены.
Далее следует натянуть шнур по диагонали. Если видите, что шнур в каком-либо месте касается стены или же толщина штукатурки будет слишком маленькой, то верхний гвоздь следует забить с учетом минимальной толщины штукатурки. Если где-то есть небольшие неровности, их можно просто срубить. Затем провешивание повторяется и забиваются новые гвозди. Следуя так же, мы определяем уровень и забиваем промежуточные гвозди по горизонтали. Таким образом гвозди, выступая, показывают нам толщину штукатурки в том или ином месте. Вокруг гвоздей устраивают гипсовые марки. Гвозди обмазываем гипсовым раствором и ровняем верхнюю марку по уровню шляпки гвоздя, после чего придаем ей форму четырехгранных пирамидок-марок. Так же провешивают и потолки, только вместо отвеса можно использовать строительный уровень. Если в потолок невозможно забить гвозди, можно выполнить вместо них марки из гипса. Последовательность сохраняется такая же, как и при забивке гвоздей.
По маркам устанавливают маяки из гипсового раствора. Для этого к маркам вертикаль¬но прикладывают правило или другую ровную рейку и закрепляют ее гипсовым раствором. Пространство между стеной и правилом заполняют раствором. После схватывания раствора на поверхности стены остается полоса, равная ширине правила. В некоторых случаях при не¬больших площадях стены в качестве маяков применяют две вертикально установленные деревянные или металлические рейки. При этом длина реек подбирается такой, чтобы они не доходили до потолка и пола на расстояние 50 мм, а их толщина соответствовала толщине штукатурного слоя. В местах, где рейка не прилегает к стене, пространство между рейкой и стеной заполняют раствором , чтобы избежать прогиба рейки. Как вы , наверное, заметили, установка маяков по маркам невообразимо трудное и хлопотное занятие, поэтому в наше время от него практически отказались. Вместо это широкое распространение получила другая идея — установка маячковых профилей.(рис.15) Эта работа наоборот очень быстрая, простая и удобная. На поверхность, которую вы собираетесь штукатурить, через каждые 30 см точечно наносится раствор, в который вдавливаются маячковые профили. После этого они по правилу-уровню (рис.16) выравниваются в одной плоскости: вертикальной и горизонтальной. Обратите внимание, что на ширине правила должно находиться минимум три маячковые рейки.
Оштукатуривание граней и углов также очень сложный вопрос, так как именно на них особенно заметны все погрешности в работе. Это можно сделать двумя способами.
- Вы можете просто приложить к краю стены ровную доску, чтобы она выступала над стеной на слой штукатурки. Потом мы оштукатуриваем стену так, чтобы отделочный слой штукатурки был в одной плоскости с выступающей гранью доски. После того, как штукатурка застыла, доску нужно аккуратно снять. Углы лучше укрепить сеткой или стальной планкой.
- Можно поступить еще проще, нанеся раствор на внутреннюю сторону угловых профилей с шагом в 20 см. Профиль же устанавливается на углы. Начинаем от центра и двигаемся к краям, следя за тем, чтобы профиль находился в одной плоскости с маячковыми профилями.
Существует несколько видов угловых профилей:
- Защитный угловой профиль под штукатурку. В нем грани угла сделаны с особой перфорацией, которая образует сетку. Это позволяет наносить более толстые слои штукатурки. (рис. 17)
- Существует и особый угловой профиль под шпаклевку. Его еще называют малярный уголок (рис.18) Там обычная перфорация. К этому же типу относится и арочный уголок (рис. 19) Его отличие в том, что он может изгибаться, повторяя сферические кромки (как выпуклые так и вогнутые).
- Еще один вид углового профиля — это профиль для фасада. Его отличает наличие стеклотканевой сетки и он используется обычно для наружных работ.
Приготовление раствора штукатурки
Естественно, чтобы что-то штукатурить, нам необходим раствор. Рассмотрим его приготовление. Сначала зальем в бак воду. Следует иметь виду, что на 30 кг сухой смеси нам нужно примерно 18 л чистой воды. В бак с водой мы засыпаем 5-7 мастерков штукатурки и тщательно размешиваем. Следом высыпаем всю штукатурку и перемешиваем с помощью строительного миксера. В итоге должна получиться совершенно однородная масса, не содержащая никаких комков. Вы можете попытаться размешать и вручную, но вряд ли у вас получится действительно хороший раствор.
О миксере нужно знать следующее.
- Существуют штукатурные и малярные миксеры. Для штукатурных растворов лопасти миксера сделаны из прута (рис.20), а для малярных — лопасти представляют из себя плоскости (рис.21) Эти миксеры нельзя путать и пытаться заменить один другим.
- Мощность дрели для замешивания должна быть минимум 650-700 В.
- Не следует вынимать миксер из раствора, пока он полностью не остановился. Вы можете добавлять воду или смесь в процессе перемешивания, делать это в несколько заходов, выдерживая интервалы в пять минут. Но нельзя добавлять воду или сухую смесь в раствор, который вы уже наносите на поверхность. Так же не добавляйте в раствор посторонние компоненты.
Нанесение штукатурки
Как только вы замешали раствор, начинайте его использование. Вы должны использовать его за 20-25 минут. Если вы оштукатуриваете потолок, то раствор стоит наносить штукатурным соколом «на себя». На стену вы можете набрасывать раствор с помощью кельмы или же намазывать полутерком снизу вверх. Потом не забудьте разровнять раствор трапециевидным правилом или просто ровной рейкой. Движения должны быть зигзагообразными. Если слой должен быть толстый, то наносите первый слой, пока он еще мягкий, зубчатым металлическим шпателем либо кельмой (рис.12). Второй слой можете наносить не ранее чем через сутки. Если размер оштукатуриваемого участка небольшой, то вы можете наносить раствор мастерком, разравнивая его потом полутерком. Основания из ЦСП, пенополистирола нужно оштукатуривать с армированием по всей поверхности стеклотканевой сеткой с ячейкой 5 х 5 мм, которую заделать внутрь штукатурного слоя на треть толщины (рис. 28). Перекрывание слоев сетки должно составлять не менее 10 см.(рис.29).
Выравнивание поверхности
Через 45-60 минут после затворения раствора он начнет схватываться. В это время вы должны выровнять поверхность. Это можно сделать широким металлическим шпателем или просто металлической рейкой, срезая излишки и заполняя углубления. На углах и откосах вы должны выполнять работу, используя угловые кельмы (рис.30)
Затирка поверхности
Если вы готовите поверхность под поклейку обоями или же под покраску, то выдержите штукатурку минут 15, а потом обильно смочите водой и затрите кругообразными движениями. Вы можете использовать для затирки жесткую войлочную или жесткую губчатую терку. Это делается, чтобы убрать следы после выравнивания поверхности рейкой или правилом.
Заглаживание поверхности
Заглаживание поверхности — это последний штрих перед поклейкой обоев. Заглаживать поверхность стоит через некоторое времени после затирки, когда поверхность уже стала матовой. Делать это можно, проводя широкие движения с помощью широкого шпателя или нержавеющей металлической терки. После того, как поверхность высохнет, можно смело клеить на неё обои. Они будут держаться хорошо. Если вам нужна глянцевая поверхность под покраску, то через 2,5- 3 часа после замешивания раствора штукатурку снова нужно смочит водой и тщательно загладить металлической теркой.
Структурирование поверхности
В зависимости от ваших желаний вы можете структурировать поверхность. Она может быть выполнена с нанесением рисунка или фактуры. Для этого вы должны прокатать еще не затвердевшую поверхность рельефным валиком либо придать ей желаемую структуру с помощью формовочного инструмента (рис. 31) либо мастерка, жесткой щетки.
Если вы работаете на фасадной поверхности, то можете придать ей желаемую структуру с помощью пневмопистолета для штукатурки.(рис.32)
Виды декоративной штукатурки
Декоративная (структурная) штукатурка
Если вы хотите, чтобы оштукатуренная поверхность была оформлена оригинальным образом, вы можете воспользоваться не только специальными терками, валиками и другими приспособлениями, но и собственно структурной штукатуркой. В состав структурной штукатурки для стен входят различные структурные добавки – «зерна». Они бывают разные по величине, поэтому их называют крупно- или мелкозернистыми. Поверхность, обработанная такими штукатурками, выглядит тоже по- разному. Если штукатурка была мелкозернистой, то поверхность почти ровная. Крупнозернистая создает более объемный рисунок. Он может выглядеть как поперечные или же продольные круглые бороздки. Такой рисунок бывает разным, потому что наносить штукатурку тоже можно по-разному: валиком, шпателем и даже распылителем. В продаже структурная штукатурка всегда белая, но вы легко можете это исправить. Во- первых вы можете просто купить пигмент нужного вам цвета и добавить его в домашних условиях. Только нужно быть очень осторожным и не добавить его слишком много. А во-вторых- вы можете сделать профессиональную колеровку в магазинах, которые занимаются продажей штукатурки и пигмента.
У структурных штукатурок есть очень много плюсов :
- Ими можно оштукатурить любые поверхности, будь то кирпич, дерево, гипсокартон и т.д.
- Ими хорошо скрывать недостатки поверхности, если на последней, например, есть какие-либо трещины или вздутия.
- Структурные штукатурки водонепроницаемы. Это значит, что их можно мыть.
- Они выдерживаю очень большой диапазон температур- от -50 до + 50С.
- Так как они пористые, то стены могут «дышать».
- Они устойчивы к механическим воздействиям.
- Немалый плюс их цена. Из всех декоративных они наиболее доступны.
- Они долговечны.
- Они высокопластичны и позволяют создавать различные рельефы.
Нанесение декоративных штукатурок
Подготовка стены. Как и для любой штукатурки ,поверхность должна быть сухой и чистой, но зато она не обязательно должна быть идеально ровной, ведь штукатурка сама выровняет поверхность за счет своей рельефности. Конечно, больших углублений, как и выступов, быть не должно. Грунтование можно производить абсолютно любыми грунтовочными растворами. Нанесение штукатурки. Наносить штукатурку нужно лишь после того, как подсохла грунтовка. Наносить её можно разными способами и инструментами, все зависит от того, какая поверхность вам нужна. Чтобы увидеть на стене расцарапанные бороздки вы должны взять мелкозернистую штукатурку с добавлением гранул натурального камня либо просто крупного зерна. Наносить лучше фактурным валиком. Если вы хотите, чтобы стена выглядела как натуральный камень, то наносите крупнозернистую штукатурку круговыми движениями шпателя.
«Венецианская» штукатурка
Одним из видов декоративной штукатурки является Венецианская штукатурка она принципиально отличается от всех, которые мы здесь описывали раньше. Чтобы получить желаемый эффект, мало просто нанести раствор на поверхность, обязательно надо сделать это правильно. В состав этой штукатурки входит мраморная мука, гашеная известь и водная эмульсия. Когда смотришь на покрытие, обработанное «венецианской» штукатуркой, то кажется, что оно сделано из прозрачного мрамора. «Венецианской» штукатуркой украшают колонны, карнизы. Но, чтобы сотворить такое чудо, надо действительно быть мастером своего дела. Найти «венецианскую» штукатурку в продаже можно уже в готовом жидком виде. Она продается в банках либо ведерках. Наносить её нужно на идеально ровную, чистую поверхность. Не забудьте, что этот материал прозрачный, поэтому все погрешности поверхности будут видны как на ладони. Эту штукатурку тоже можно колеровать любым цветом, но профессионалы советуют смешивать несколько оттенков одного цвета. Так поверхность будет еще лучше и будет больше похожа на мрамор.
Чтобы добиться нужной прозрачности и глубины покрытия, надо нанести от 4 до 10 слоев штукатурки. Наносится она по специальной технике, маленькими штришками треугольным шпателем либо же специальными кельмами. (рис.33) После того, как стена высохнет, её надо покрыть натуральным пчелиным воском. Это делается для того, чтобы защитить покрытие. Воск абсолютно прозрачный и на цвет не влияет. Правда, в продаже есть и такая «венецианская» штукатурка, которую ничем покрывать не надо. В её состав уже все включено.
У «венецианской «штукатурки есть свои преимущества:
- Существует большая палитра цветов;
- Она обладает эффектом мраморной поверхности
- С её помощью можно создавать «мраморные» Эффект мозаики
- Она водонепроницаема. Её можно мыть и чистить не боясь, что она растворится.
Этапы нанесения
Подготовка поверхности.
Поверхность должна быть идеальной во всех отношениях. На ней не должно быть никаких неровностей, никакой грязи и пыли. Она обязательно должна быть сухой. После того, как это условие выполнено, вы наносите несколько слоев специальной грунтовки. Можете нанести вместо грунтовки один слой виниловой (акриловой) краски.
Нанесение «венецианской» штукатурки.
Вы можете начинать к работе сразу же, как увидите, что грунтовочный слой высох. Эта работа очень щепетильная. Покрытие наносят очень аккуратно при помощи шпателя. Большие штрихи можно наносить кельмами. Чтобы не было неровностей, каждому слою дают высохнуть и после этого его зачищают. Первые слои вы можете наносить широким, а последние лучше всего наносить узким шпателем. Примерно через 20 минут после того, как вы нанесли последний слой, вы можете начинать зачищать поверхность. Делать это лучше всего мелкой наждачной бумагой круговыми движениями. Не стоит применять лаки при работе с «венецианской» штукатуркой, так как от них поверхность может помутнеть и штукатурка потеряет свое основное преимущество — красивую прозрачность.
Цветная штукатурка «каменная крошка»
Каменная крошка это настоящие мелкие камушки, которые перемешиваются с клеящими и связующими материалами. Каменная крошка может быть разноцветной, но в любом случае каждый цвет состоит из нескольких оттенков. Каменная крошка наносится шпателем на поверхность и разравнивается по ней равномерно. Если вы собираетесь отделывать фасад, то вам лучше взять крупную каменную крошку, в особенности для отделки цоколя. Если же вам предстоят внутренние работы, лучше возьмите мелкую крошку. Существует кварцевая, мраморная и гранитная крошка. Каменная крошка отлично переносит любые погодные явления.
Хотя это покрытие и считается тяжелым, так как включает в себя вкрапления натуральных камней, но имеет все же ряд преимуществ:
- Она особенно хорошо выносит любые механические воздействия.
- Гидро-, жаро- и морозоустойчива.
- Очень долговечна.
- Её можно наносить на бетон и пенобетон.
- Отлично скрывает любые неровности поверхности.
- За счет пористости позволяет «дышать» поверхности, на которую наносится.
Этапы нанесения
Подготовка поверхности
. Как всегда стена должна быть чистой и сухой.
Грунтование
. При грунтовке можно использовать любую краску.
Нанесение цветной каменной крошки
. Чтобы масса была не такой густой и проще наносилась, вы можете добавить в неё немножко воды. Потом очень хорошо перемешайте массу. Наносить крошку лучше набрасывая на стену и размазывая движениями сверху вниз. Шпателем снимайте излишки массы. Имейте ввиду, что крошка может стираться, поэтому не стоит водить по ней шпателем больше 2 раз. Сохнет оштукатуренная поверхность не менее 6 часов.
Нанесение лака
. По истечении двух недель вы можете покрыть поверхность лаком. Это сохранит крошку более яркой в течение долгого времени.
Штукатурка для печи. Составы растворов
Несмотря на то, что сейчас в большинстве домов есть централизованное отопление, существует до сих пор спрос на кладку печей. Во-первых они все же часто встречаются в деревнях, во-вторых — часто дома украшаются каминами. Так как поверхность печей особая, то оштукатуривание печей связано со специальной технологией. Эта штукатурка должна выдерживать достаточно высокие температуры. Ниже мы приводим составы, которые можно применять при оштукатуривания печи
.
- Одна часть гипса, две части известкового теста, одна часть песка, 0,2 части асбеста № 6-7.
- Одна часть глины, одна часть известкового теста, две части песка, 0,1 части асбеста № 6-7.
- Одна часть глины, две части песка, 0,1 ча¬сти асбеста № 6—7.
- Одна часть глины, одна часть цемента, две части песка, 0,1 части асбеста № 6-7.
Все сухие компоненты нужно смешать между собой и после этого добавить воды. Смесь должна получиться достаточно густой. Асбест добавляется для придания штукатурке прочности.
Смотрите также по данной теме:
Статья » Декоративная штукатурка: создаем шедевры «.
«Мир Красок» — это торговая сеть, объединяющая более 60 торговых точек по продаже лакокрасочных материалов и сопутствующих товаров, а так же интернет магазин с возможностью доставки по Москве и Московской области. У нас Вы всегда можете купить декоративную штукатурку .
Числа и цифры | Наука и жизнь
Наука и жизнь // Иллюстрации
Наука и жизнь // Иллюстрации
‹
›
Понятие о числе зародилось в глубокой древности, когда человек научился считать предметы: два дерева, семь быков, пять рыб. Сначала счёт вели на пальцах. В разговорной речи мы до сих пор иногда слышим: «Дай пять!», то есть подай руку. А раньше говорили: «Дай пясть!» Пясть — это рука, а на руке пять пальцев. Когда-то слово пять имело конкретное значение — пять пальцев пясти, то есть руки.
Позднее вместо пальцев для счёта начали использовать зарубки на палочках. А когда возникла письменность, для обозначения чисел стали употреблять буквы. Например, у славян буква А означала число «один» (Б не имело числового значения), В — два, Г — три, Д — четыре, Е — пять.
Постепенно люди стали осознавать числа независимо от предметов и лиц, которые могли подвергаться счёту: просто число «два» или число «семь». В связи с этим у славян появилось слово число. В значении «счёт, величина, количество» его начали употреблять в русском языке с ХI века. Наши предки использовали слово число и для указания на дату, год. С ХIII века оно стало обозначать ещё и дань, подать.
В старину в книжном русском языке наряду со словом число имело хождение существительное чисмя, а также прилагательное чисменый. В ХVI веке появился глагол числити — «считать».
Во второй половине ХV века в европейских странах получили распространение специальные знаки, обозначающие числа: 1, 2, 3, 4, 5, 6, 7, 8, 9, 0. Их изобрели индийцы, а в Европу они попали благодаря арабам, поэтому и получили название арабские цифры.
В нашей стране арабские цифры появились в Петровскую эпоху. В то же время в русский язык вошло слово цифра. Арабское по происхождению, оно тоже пришло к нам из европейских языков. У арабов первоначальное значение слова цифра — это нуль, пустое место. Именно в этом значении существительное цифра вошло во многие европейские языки, в том числе в русский. С середины ХVIII века слово цифра приобрело новое значение — знак числа.
Совокупность цифр в русском языке называлась цифирь (в старой орфографии цыфирь). Дети, изучавшие счёт, говорили: учу цифирь, пишу цифирь. (Вспомните учителя по фамилии Цыфиркин из комедии Дениса Ивановича Фонвизина «Недоросль», который обучал нерадивого Митрофанушку цифири, то есть арифметике.) При Петре I в России открыли цифирные школы — начальные государственные общеобразовательные учебные заведения для мальчиков. В них кроме других дисциплин детям преподавали цифирную науку — арифметику, математику.
Итак, слова число и цифра различаются и по значению и по происхождению. Число — единица счёта, выражающая количество (один дом, два дома, три дома и т.д.). Цифра — знак (символ), обозначающий значение числа. Для записи чисел мы используем арабские цифры — 1, 2, 3… 9, 0, а в некоторых случаях и римские — I, II, III, IV, V и т.д.
В наши дни слова число и цифра употребляются и в других значениях. Например, когда мы спрашиваем «Какое сегодня число?», то имеем в виду день месяца. Сочетания «в том числе», «из числа кого-нибудь», «в числе кого-то» обозначают состав, совокупность людей или предметов. А если мы доказываем что-то с цифрами в руках, то обязательно используем числовые показатели. Словом цифра называют также денежную сумму (цифра дохода, цифра гонорара).
В разговорной речи слова число и цифра часто заменяют друг друга. Например, числом мы называем не только величину, но и знак, который её выражает. Об очень больших в числовом отношении величинах говорят астрономические числа или астрономические цифры.
Слово количество появилось в русском языке в XI веке. Оно пришло из старославянского языка и образовано от слова колико — «сколько». Существительное количество употребляется в применении ко всему, что поддаётся счёту и измерению. Это могут быть люди или предметы (количество гостей, количество книг), а также количество вещества, которое мы не считаем, а измеряем (количество воды, количество песка).
B-tree / Хабр
Введение
Деревья представляют собой структуры данных, в которых реализованы операции над динамическими множествами. Из таких операций хотелось бы выделить — поиск элемента, поиск минимального (максимального) элемента, вставка, удаление, переход к родителю, переход к ребенку. Таким образом, дерево может использоваться и как обыкновенный словарь, и как очередь с приоритетами.
Основные операции в деревьях выполняются за время пропорциональное его высоте. Сбалансированные деревья минимизируют свою высоту (к примеру, высота бинарного сбалансированного дерева с n узлами равна log n). Большинство знакомо с такими сбалансированными деревьями, как «красно-черное дерево», «AVL-дерево», «Декартово дерево», поэтому не будем углубляться.
В чем же проблема этих стандартных деревьев поиска? Рассмотрим огромную базу данных, представленную в виде одного из упомянутых деревьев. Очевидно, что мы не можем хранить всё это дерево в оперативной памяти => в ней храним лишь часть информации, остальное же хранится на стороннем носителе (допустим, на жестком диске, скорость доступа к которому гораздо медленнее). Такие деревья как красно-черное или Декартово будут требовать от нас log n обращений к стороннему носителю. При больших n это очень много. Как раз эту проблему и призваны решить B-деревья!
B-деревья также представляют собой сбалансированные деревья, поэтому время выполнения стандартных операций в них пропорционально высоте. Но, в отличие от остальных деревьев, они созданы специально для эффективной работы с дисковой памятью (в предыдущем примере – сторонним носителем), а точнее — они минимизируют обращения типа ввода-вывода.
Структура
При построении B-дерева применяется фактор t, который называется минимальной степенью. Каждый узел, кроме корневого, должен иметь, как минимум t – 1, и не более 2t – 1 ключей. Обозначается n[x] – количество ключей в узле x.
Ключи в узле хранятся в неубывающем порядке. Если x не является листом, то он имеет n[x] + 1 детей. Если занумеровать ключи в узле x, как k[i], а детей c[i], то для любого ключа в поддереве с корнем c[i] (пусть k1), выполняется следующее неравенство – k[i-1] ≤k1≤k[i] (для c[0]: k[i-1] = -∞, а для c[n[x]]: k[i] = +∞). Таким образом, ключи узла задают диапазон для ключей их детей.
Все листья B-дерева должны быть расположены на одной высоте, которая и является высотой дерева. Высота B-дерева с n ≥ 1 узлами и минимальной степенью t ≥ 2 не превышает logt(n+1). Это очень важное утверждение (почему – мы поймем чуть позже)!
h ≤ logt((n+1)/2) — логарифм по основанию t.
Операции, выполнимые с B-деревом
Как упоминалось выше, в B-дереве выполняются все стандартные операции по поиску, вставке, удалению и т.д.
Поиск
Поиск в B-дереве очень схож с поиском в бинарном дереве, только здесь мы должны сделать выбор пути к потомку не из 2 вариантов, а из нескольких. В остальном — никаких отличий. На рисунке ниже показан поиск ключа 27. Поясним иллюстрацию (и соответственно стандартный алгоритм поиска):
- Идем по ключам корня, пока меньше необходимого. В данном случае дошли до 31.
- Спускаемся к ребенку, который находится левее этого ключа.
- Идем по ключам нового узла, пока меньше 27. В данном случае – нашли 27 и остановились.
Операция поиска выполняется за время O(t logt n), где t – минимальная степень. Важно здесь, что дисковых операций мы совершаем всего лишь O(logt n)!
Добавление
В отличие от поиска, операция добавления существенно сложнее, чем в бинарном дереве, так как просто создать новый лист и вставить туда ключ нельзя, поскольку будут нарушаться свойства B-дерева. Также вставить ключ в уже заполненный лист невозможно => необходима операция разбиения узла на 2. Если лист был заполнен, то в нем находилось 2t-1 ключей => разбиваем на 2 по t-1, а средний элемент (для которого t-1 первых ключей меньше его, а t-1 последних больше) перемещается в родительский узел. Соответственно, если родительский узел также был заполнен – то нам опять приходится разбивать. И так далее до корня (если разбивается корень – то появляется новый корень и глубина дерева увеличивается). Как и в случае обычных бинарных деревьев, вставка осуществляется за один проход от корня к листу. На каждой итерации (в поисках позиции для нового ключа – от корня к листу) мы разбиваем все заполненные узлы, через которые проходим (в том числе лист). Таким образом, если в результате для вставки потребуется разбить какой-то узел – мы уверены в том, что его родитель не заполнен!
На рисунке ниже проиллюстрировано то же дерево, что и в поиске (t=3). Только теперь добавляем ключ «15». В поисках позиции для нового ключа мы натыкаемся на заполненный узел (7, 9, 11, 13, 16). Следуя алгоритму, разбиваем его – при этом «11» переходит в родительский узел, а исходный разбивается на 2. Далее ключ «15» вставляется во второй «отколовшийся» узел. Все свойства B-дерева сохраняются!
Операция добавления происходит также за время O(t logt n). Важно опять же, что дисковых операций мы выполняем всего лишь O(h), где h – высота дерева.
Удаление
Удаление ключа из B-дерева еще более громоздкий и сложный процесс, чем вставка. Это связано с тем, что удаление из внутреннего узла требует перестройки дерева в целом. Аналогично вставке необходимо проверять, что мы сохраняем свойства B-дерева, только в данном случае нужно отслеживать, когда ключей t-1 (то есть, если из этого узла удалить ключ – то узел не сможет существовать). Рассмотрим алгоритм удаления:
1)Если удаление происходит из листа, то необходимо проверить, сколько ключей находится в нем. Если больше t-1, то просто удаляем и больше ничего делать не нужно. Иначе, если существует соседний лист (находящийся рядом с ним и имеющий такого же родителя), который содержит больше t-1 ключа, то выберем ключ из этого соседа, который является разделителем между оставшимися ключами узла-соседа и исходного узла (то есть не больше всех из одной группы и не меньше всех из другой). Пусть это ключ k1. Выберем ключ k2 из узла-родителя, который является разделителем исходного узла и его соседа, который мы выбрали ранее. Удалим из исходного узла нужный ключ (который необходимо было удалить), спустим k2 в этот узел, а вместо k2 в узле-родителе поставим k1. Чтобы было понятнее ниже представлен рисунок (рис.1), где удаляется ключ «9». Если же все соседи нашего узла имеют по t-1 ключу. То мы объединяем его с каким-либо соседом, удаляем нужный ключ. И тот ключ из узла-родителя, который был разделителем для этих двух «бывших» соседей, переместим в наш новообразовавшийся узел (очевидно, он будет в нем медианой).
Рис. 1.
2)Теперь рассмотрим удаление из внутреннего узла x ключа k. Если дочерний узел, предшествующий ключу k содержит больше t-1 ключа, то находим k1 – предшественника k в поддереве этого узла. Удаляем его (рекурсивно запускаем наш алгоритм). Заменяем k в исходном узле на k1. Проделываем аналогичную работу, если дочерний узел, следующий за ключом k, имеет больше t-1 ключа. Если оба (следующий и предшествующий дочерние узлы) имеют по t-1 ключу, то объединяем этих детей, переносим в них k, а далее удаляем k из нового узла (рекурсивно запускаем наш алгоритм). Если сливаются 2 последних потомка корня – то они становятся корнем, а предыдущий корень освобождается. Ниже представлен рисунок (рис.2), где из корня удаляется «11» (случай, когда у следующего узла больше t-1 ребенка).
Рис.2.
Операция удаления происходит за такое же время, что и вставка O(t logt n). Да и дисковых операций требуется всего лишь O(h), где h – высота дерева.
Итак, мы убедились в том, что B-дерево является быстрой структурой данных (наряду с такими, как красно-черное, АВЛ). И еще одно важное свойство, которое мы получили, рассмотрев стандартные операции, – автоматическое поддержание свойства сбалансированности – заметим, что мы нигде не балансируем его специально.
Базы Данных
Проанализировав, вместе со скоростью выполнения, количество проведенных операций с дисковой памятью, мы можем сказать, что B-дерево несомненно является более выгодной структурой данных для случаев, когда мы имеем большой объем информации.
Очевидно, увеличивая t (минимальную степень), мы увеличиваем ветвление нашего дерева, а следовательно уменьшаем высоту! Какое же t выбрать? — Выбираем согласно размеру оперативной памяти, доступной нам (т.е. сколько ключей мы можем единовременно просматривать). Обычно это число находится в пределах от 50 до 2000. Разберёмся, что же дает нам ветвистость дерева на стандартном примере, который используется во всех статьях про B-tree. Пусть у нас есть миллиард ключей, и t=1001. Тогда нам потребуется всего лишь 3 дисковые операции для поиска любого ключа! При этом учитываем, что корень мы можем хранить постоянно. Теперь видно, на сколько это мало!
Также, мы читаем не отдельные данные с разных мест, а целыми блоками. Перемещая узел дерева в оперативную память, мы перемещаем выделенный блок последовательной памяти, поэтому эта операция достаточно быстро работает.
Соответственно, мы имеем минимальную нагрузку на сервер, и при этом малое время ожидания. Эти и другие описанные преимущества позволили B-деревьям стать основой для индексов, базирующихся на деревьях в СУБД.
Upd: визуализатор
Литература
«Алгоритмы. Построение и анализ» Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн (второе издание)
«Искусство программирование. Сортировка и поиск» Дональд Кнут.
Занимаюсь B-деревьями. Если вы уделяете достаточно времени размышлениям о… | от Вайдехи Джоши | basecs
Занимаюсь B-деревьями!
Если вы потратите достаточно времени на размышления и изучение информатики, вы начнете замечать, что все взаимосвязано. История вычислительной техники часто может ощущаться как связанный список событий, в котором одно событие, человек или изобретение неизбежно связаны с другим.
Если мы действительно подумаем об этом, то это касается почти всех человеческих историй.Люди склонны создавать свои собственные творения на основе работ тех, кого они восхищают. Мы черпаем вдохновение и черпаем идеи у мастеров, которые были до нас, часто возрождая или заново изобретая старые идеи и перенастраивая их, чтобы они стали нашими собственными. По пути мы добавляем еще один узел в связанный список истории, который в конечном итоге становится еще одной ступенькой для кого-то еще в будущем.
Как мы узнали на прошлой неделе, это имело место с изобретателями красно-черного дерева, которые основывали свои теории и исследования на работе другого ученого-информатика, работавшего до них.Создатели красно-черного дерева адаптировали свою работу с основ некого по имени Рудольф Байер, Рэнд стоял на его плечах, чтобы вывести свою собственную структуру данных.
Так что же так вдохновляло в работе Байера? Как его работа стала краеугольным камнем для структур данных, которые мы используем сегодня? Пришло время сделать шаг назад в связанном списке истории и, наконец, выяснить это.
На протяжении всей этой серии статей мы добавляли в нашу базу знаний древовидную структуру данных.Совсем недавно мы погрузились в самобалансирующиеся деревья, в том числе деревья AVL и красно-черные деревья. Оказывается, B-деревья тоже попадают в эту категорию деревьев.
B-дерево: определение
B-дерево — это самобалансирующееся дерево, которое является разновидностью двоичного дерева поиска, поскольку оно допускает наличие более двух дочерних узлов. Подобно другим самобалансирующимся древовидным структурам, B-деревья также имеют набор правил, которым они должны следовать; однако они уникальны тем, что особенно хорошо умеют обрабатывать данные, которые не помещаются в основную память машины или программы.Другими словами, они отличаются от AVL и красно-черных деревьев, потому что они могут обрабатывать большие объемы данных способами, которые ни одно из этих других самобалансирующихся деревьев на самом деле не может.
Как оказалось — сюрприз, сюрприз! — У B-деревьев своя интересная история. Поскольку мы пытаемся понять, что такое B-деревья и почему , как они были созданы, стоит понять, откуда вообще взялись B-деревья!
B-деревья — это не что иное, как обобщение 2–3-дерева, которое было изобретено в 1970 году компьютерным ученым по имени Джон Хопкрофт.Дерево 2–3 — это древовидная структура данных, в которой узлы каждого дерева содержат данные в форме ключей, а также потенциальные дочерние узлы. Что интересно в данных узла в 2–3 дереве, так это то, что они могут содержать на более одного ключа , что не похоже ни на какие древовидные структуры, которые мы рассматривали в этой серии статей.
Характеристики 2–3 деревьев
Однако есть некоторые ограничения, которым должны следовать узлы 2–3 дерева; например, один узел не может содержать неограниченное количество ключей.
Общие правила для дерева 2–3 следующие:
- Внутренние (родительские) узлы дерева 2–3 должны содержать либо один ключ / часть данных , либо ссылку на , два дочерних элемента . узлов
- В качестве альтернативы внутренние (родительские) узлы могут содержать , два ключей / частей данных и ссылку на , три дочерних узла
. 2–3 дерева, чтобы оно было действительным.А что насчет листовых узлов? Итак, поскольку по определению листовой узел не может иметь дочерних узлов (потому что именно это делает его листом), листья 2–3 дерева могут содержать либо один , либо два ключа .
Так как древовидные структуры данных лучше всего пояснять на визуальном примере, давайте нарисуем один, чтобы увидеть эти правила в действии.
Дерево 2–3 с двумя типами узлов
В показанном здесь примере у нас есть допустимое дерево 2–3. Мы заметим, что некоторые узлы содержат только один ключ , в то время как другие узлы содержат два ключа .Помните: узел отличается от ключа! Как и в обычном двоичном дереве поиска, узел содержит данных . В случае дерева 2–3 может быть две части данных — два ключа.
Обратите внимание, что левый дочерний элемент корневого узла 37
содержит два ключа: 15
и 29
. Поскольку узел, содержащий два ключа, должен иметь трех дочерних узлов, мы можем быть уверены, что этот левый узел будет иметь три дочерних узла, что он и делает! Точно так же правый дочерний элемент корневого узла — это узел только с одним ключом, 44
.Таким образом, у него может быть только двое детей.
Дерево 2–3 имеет множество уникальных характеристик, все из которых мы увидим снова, когда вернемся к теме B-деревьев.
Обход 2–3 дерева по порядку
На показанном здесь рисунке ключи каждого узла заменены значениями 1–12
. Как только мы переписываем значения в последовательные целые числа, начинает вырисовываться шаблон:
ключи дерева 2–3 сортируются в порядке обхода, который перемещается вверх и вниз по структуре, от левого дочернего элемента к корню. , к правильному ребенку.
Мы также можем начать видеть, что в игру вступает еще одна абстракция, если мы присмотримся достаточно внимательно: если в узле n ключей, то этот узел всегда будет иметь n + 1 дочерних узлов.
Точно так же мы можем заметить другой шаблон, где все дочерние узлы в левом поддереве узла меньше ключа, который на них ссылается. Например, в правом поддереве этого 2–3 дерева ключи 9
и 10
меньше ключа 11
и находятся слева (в левом поддереве) от своего родительского узла.Однако ключ 12
больше, чем его родительский узел 11
, поэтому он находится справа (в правом поддереве) от своего родительского узла.
По сути, дерево 2–3 не так уж и сложно. Даже не выполняя на самом деле этапов поиска, вставки или удаления из 2–3 дерева, мы, вероятно, можем догадаться, как это будет происходить. Поскольку мы можем быстро определить, что эта структура очень похожа на двоичное дерево поиска, мы можем опираться на наши знания о BST и вспомнить, что поиск, вставка и удаление из 2–3 дерева в конечном итоге потребуют логарифмического времени, или O (log n) .Единственное основное отличие здесь состоит в том, что узел может содержать трех дочерних элементов, а не только два, и что внутренние узлы в этом дереве должны попадать в одну из двух категорий, когда речь идет о том, сколько ключей и дочерних элементов может иметь.
Однако правила, определяющие дерево 2–3, имеют решающее значение для понимания того, как на самом деле функционирует B-дерево. Теперь, когда мы понимаем работу Хопкрофта над деревом 2–3, пришло время применить некоторые паттерны и абстракции, которые мы только что заметили!
Глядя на шаблоны дерева 2–3, мы заметили, что количество ключей n в узле коррелирует с тем, на сколько дочерних узлов ( n + 1 ) этот узел может ссылаться.Оказывается, именно эта абстракция использовалась изобретателями B-дерева, когда они вывели B-дерево из дерева 2–3.
В 1971 году два исследователя по имени Рудольф Байер и Эдвард М. МакКрайт работали над статьей в исследовательских лабораториях Boeing. В этом документе, озаглавленном «Организация и обслуживание больших упорядоченных индексов» , описана структура данных, основанная на обобщенной версии двоичного дерева поиска, оптимизированной для чтения и записи больших частей данных за раз.Главный тезис статьи заключался в том, что можно использовать коэффициент ветвления , чтобы определить, сколько возможных дочерних узлов может иметь узел, а также сколько ключей он может содержать.
B представляет коэффициент ветвления B-дерева.
Коэффициент ветвления представляет границу или максимальное и минимальное количество дочерних элементов на узел в дереве. Для наших целей мы будем называть коэффициент ветвления переменной B , но помните, что это всего лишь переменная! Фактор ветвления также иногда называют n или другой переменной буквой.
Итак, как мы можем использовать фактор ветвления, чтобы определить, как выглядит B-дерево и как оно структурировано? Конечно, по формуле!
Число потомков на узел в B-дереве можно описать как: B ≤ x <2B , где B — коэффициент ветвления, а x — количество потомков на узел. Обратите внимание, что существует — строгая верхняя граница для количества дочерних узлов на узел: мы используем <, , а не ≤.
Описание количества ключей и дочерних элементов, возможных на узел
Аналогично, количество ключей на узел в B-дереве можно описать как: B-1 ≤ y <2B-1 , где B — коэффициент ветвления опять же, и y — это количество ключей / данных, которые могут содержаться в узле.
Если мы вспомним 2–3 дерева, это имеет смысл: вспомните, как количество ключей было представлено n , а количество дочерних элементов было абстрагировано и составило n + 1 ? Здесь мы делаем обратное: количество возможных ключей фактически такое же, как количество возможных дочерних элементов, минус 1.
На самом деле, давайте попробуем эту формулу с 2–3 деревьями и посмотрим, работает ли она. В дереве 2–3 коэффициент ветвления B равен 2. Если B = 2
, то мы знаем, что количество дочерних узлов должно быть 2 ≤ x <2 (2). Из-за строгой верхней границы это в основном означает, что x может быть только 2 или 3. Точно так же количество ключей должно быть 2-1 ≤ y <2 (2) -1 , что означает что y должно быть больше или равно 1, но меньше 3.Таким образом, используя эту формулу, мы можем подтвердить, что 2–3 дерева могут иметь только 1 или 2 ключа на узел.
В дополнение к этим формулам, при работе с B-деревьями следует иметь в виду несколько простых фактов:
Некоторые быстрые факты о B-дереве
- B-дерево (включая 2–3 дерева) часто описывается ссылками к его границам в качестве параметров. B-дерево описывается как «дерево (B) — (2B-1) ». Например, когда
B = 2
, мы называем эту тройку «2 — (2 (2) -1) деревом»), отсюда и происходит название «2–3 дерева». - Корневой узел игнорирует одно из двух ограничений в том, что у него нет нижней границы , когда речь идет о том, сколько ключей у него должно быть. Например, это означает, что корень дерева 5–9 может иметь много дочерних элементов, но может содержать только один ключ, что вполне допустимо.
- Все листья в B-дереве всегда должны находиться на одной глубине. Подобно тому, как корневой узел нарушает ограничение ключа, конечные узлы нарушают правило дочерних узлов, поскольку, по определению, конечный узел никогда не может иметь дочерних узлов.
Прежде чем мы перейдем к основным операциям с B-деревом, давайте вспомним, как выглядит отдельный узел в B-дереве.
Исследование одного узла B-дерева
Важно хорошо понимать, как выглядит узел, потому что в следующем разделе мы собираемся немного заняться изменением указателей и ссылок. Вот некоторые ключевые моменты, которые следует помнить о внутренней работе отдельного узла в B-дереве:
- Узел содержит по крайней мере один, а возможно и много ключей в качестве данных, которые он хранит.
- Узел ссылается на одного или нескольких дочерних узлов, если это не листовой узел.
Мы не будем подробно описывать, как выполнять поиск в B-дереве, поскольку это очень похоже на выполнение операции поиска в BST. Следует помнить одну важную вещь: когда мы ищем в B-дереве, мы будем перебирать и сравнивать ключи каждого узла, на который мы смотрим; полезно, чтобы ключи были отсортированы, чтобы мы могли сравнивать по одному ключу за раз и определять, нужно ли нам перемещаться влево, вправо или вниз по середине дерева при продолжении поиска.
Тем не менее, может немного усложнить при вставке и удалении. Мы перейдем к более сложным вещам, но для начала давайте рассмотрим простейшие версии обоих этих процессов.
Вставка в дерево в основном аналогична поиску; мы начинаем с корня и идем по дереву по мере необходимости, пока не найдем правильный дом для ключа, который мы пытаемся вставить. В приведенном ниже примере мы вставляем ключ 25
в дерево 2–3.Мы начинаем с корневого узла и сравниваем значение одного ключа в корне, 37
, со значением, которое нужно вставить, 25
. Поскольку 25
меньше 37
, мы перемещаемся вниз к левому поддереву.
Вставка B-дерева, часть 1
Затем мы рассмотрим ключи у левого дочернего узла, узла, который является родителем левого поддерева. Этот узел имеет значения 15
и 29
. Поскольку 25
находится между этими двумя значениями, мы перейдем к среднему поддереву между этими двумя ключами.Узел посередине содержит один ключ, поэтому в этом сценарии все, что нам нужно сделать, это добавить еще один ключ в этот узел, поскольку он не заполнен полностью; добавляем 25
в узел, содержащий ключ 22
.
Вставка B-дерева, часть 2
Иногда, однако, даже кажущаяся простая вставка может включать дополнительный шаг. Например, если нам нужно было вставить ключ 6
в то же дерево, с которым мы работали, мы следовали бы тому же процессу, что и раньше: начнем с корневого узла и продвинемся вниз по правильному поддереву.
Получается, что ключ 6
нужно вставить между 4
и 8
. Однако, как только вставите этот ключ, этот узел переполнится! Так что же нам делать? Мы можем разделить переполненный узел, чтобы освободить место для вставляемого значения.
Мы возьмем средний ключ из переполненного узла, которым оказывается 6
, и переместим его на родительский узел в нужное место. Если родительский узел переполняется, мы можем просто повторить процесс разделения снова, до тех пор, пока не достигнем корневого узла.
Удаление из B-дерева легко сделать, если удаляемый узел имеет другой ключ. Но часто узел, из которого мы удаляем, имеет только один ключ , и в этом случае мы остаемся в проблемном сценарии, а именно, что у нас есть другие узлы, указывающие на узел, в котором нет данных! Лучший способ справиться с этой ситуацией — ротация.
Удаление B-дерева: простой пример
В примере дерева, показанном здесь, у нас есть часть B-дерева, на которой мы сосредоточимся (на практике это должно быть поддерево и часть большого количества структура данных дерева большего размера, чтобы быть действительной).
Представьте, что мы хотим удалить ключ 13
из этого B-дерева. Мы можем сделать это довольно легко, за исключением того, что как только мы удаляем этого ключа, у нас появляется пустой узел без данных, что является прямым нарушением наших правил B-дерева!
Чтобы исправить это, мы можем повернуть ключ от родительского узла вниз, так как у него есть ключ для передачи. Но тогда нам нужно убедиться, что мы заполнили эту пустую точку данных в родительском узле некоторым значением; помните, что родительский узел должен иметь 2 ключа, если у него должно быть 3 дочерних узла, а это значит, что нам нужно добавить еще один ключ к родительскому узлу.В ротации мы можем взять ближайший по порядку родственный элемент и заменить пустой ключ в родительском узле этим ключом. После удаления ключа 13
мы поворачиваем вниз 9
, чтобы занять его место, и перемещаем вверх на ключ 7
, чтобы заполнить пустое место в родительском узле.
Не слишком ужасно сложно, не так ли? Не волнуйтесь, я собираюсь немного усложнить ситуацию.
Итак, у нас есть несколько удобных инструментов, когда дело доходит до работы с деревьями: мы можем разделить ключей узлов или даже повернуть вокруг значений внутри них.Но иногда ни одного из этих двух вариантов недостаточно для работы.
Давайте посмотрим на примере, где это могло бы иметь место.
Удаление сложного B-дерева, часть 1
В приведенном ниже B-дереве, которое, как оказалось, является деревом 2–3, мы хотим удалить ключ 40
из структуры. Однако даже при взгляде на эту иллюстрацию проблема начинает становиться совершенно очевидной: если мы удалим 40
, нам нужно будет что-то сделать с его дочерними узлами.
Сложное удаление B-дерева, часть 2
Проще всего заменить удаленный ключ одним из дочерних значений; здесь мы можем выбрать крайний левый элемент правого дочернего узла, так как этот узел имеет два ключа: 48
и 50
.Это должно быть легким выбором, потому что у него есть два ключа , что означает, что у него есть запасной ключ, и он может легко передать этот ключ своему родителю. Мы можем распространить ключ 48
от дочернего узла на его родительский и использовать дочерний ключ для заполнения данных родительского узла, чтобы никакие правила не нарушались.
Но что, если мы захотим удалить ключ в гораздо более опасном месте? Допустим, теперь нам нужно удалить ключ 48
.
Сложное удаление B-дерева, часть 3
Это будет немного сложнее, поскольку удаление ключа 48
приведет к лишению двух его дочерних узлов, 39
и 50
! Ой ой.Что ж, давайте сделаем то, что, как мы знаем, сработает для начала: мы переместим левый дочерний элемент вверх по порядку, чтобы он занял место своего родителя.
Сложное удаление B-дерева, часть 4
Но теперь, когда мы переместили 39
вверх, чтобы стать родительским узлом, левый дочерний узел, который раньше был , был 39
, теперь пуст.
Хороший способ справиться с этим — это объединить этих двух узлов вместе и распространить пустой связанный ключ вверх так, чтобы «бесключевой» пустой узел стал родительским.
Теперь мы, наконец, в хорошей позиции, чтобы подтолкнуть «бесключевой» узел к родительскому узлу, который содержит 22
и 36
, и повернуть значение 36
вниз к дочернему узлу. . Поскольку у нас не может быть двух узлов с одним значением и двумя дочерними элементами, нам нужно сделать что-то около 29
и 36
. Проще всего, конечно, объединить их вместе.
По сути, то, что мы делаем во всем этом процессе, — это объединение среднего и правого поддеревьев в одно правое поддерево.
На первый взгляд все это может показаться трудоемким, но учтите: даже выполнение работы по поиску, вставке и удалению — независимо от того, сколько шагов мы должны сделать, чтобы переставить указатели и перемещать клавиши — по-прежнему логарифмический , что означает, что все это по-прежнему суперэффективно.
Итак, зачем кому-то использовать B-дерево, а не любое другое самобалансирующееся дерево? Благодаря упорядоченному порядку ключей и возможности последовательного обхода структуры, B-деревья очень эффективны для хранения данных в индексированной базе данных, например, в MySQL.Базе данных становится очень легко читать раздел диска за раз, потому что большинство B-деревьев имеют значение B (коэффициент ветвления), которое эквивалентно размеру блока данных. Кеши часто сопоставляются с целыми частями / разделами B-дерева за раз, что означает, что база данных может вытащить сразу весь раздел и прочитать любое значение (я), которое ей нужно из него , без необходимости создавать тонны дополнительные звонки снова и снова. Супер умно, а ?!
После всего этого мы все еще задаемся вопросом: почему буква «B»? Что ж, как и в случае с самыми интересными моментами в истории: все зависит от того, кого вы спросите.На этот вопрос никогда не было явного объяснения или ответа. Некоторые люди предполагают, что буква «B» означает «сбалансированный», «широкий» или, возможно, даже «Боинг», над которым МакКрайт и Байер работали во время написания своей исследовательской работы.
Возможно, лучший ответ, который когда-либо получит любой из нас, будет дан на 24-м ежегодном симпозиуме по сопоставлению комбинаторных шаблонов в 2013 году, когда Эдвард М. МакКрайт объяснил нечеткую историю за буквой B в B-деревьях:
Байер и я были в обеденный перерыв, когда мы придумывали имя.И … B, вы знаете … В то время мы работали на Boeing, мы не могли использовать это имя, не посоветовавшись с юристами. Итак, есть Б. [Дерево В] связано с балансом, еще один Б. Байер был старшим автором, который [был] на несколько лет старше меня и имел гораздо больше публикаций, чем я. Итак, есть еще один Б. Итак, за обеденным столом мы так и не решили, есть ли один из тех, которые имеют больше смысла, чем остальные. На самом деле можно сказать: чем больше вы думаете о том, что означает B в B-деревьях, тем лучше вы понимаете B-деревья.
В конце концов, все, в чем мы можем быть уверены, — это то, что если вопрос в том, следует ли использовать B-дерево или нет, ответ: это зависит, конечно! Ответ почти всегда , это зависит от того, что мы хотим сделать . Но, по крайней мере, мы знаем , как это сделать сейчас!
B-деревья особенно легко читать и исследовать, поскольку они являются основой баз данных и широко используются. Тем не менее, существует так много ресурсов и , что бывает сложно найти действительно полезные.Вот некоторые из моих любимых, которые помогут вам продолжить изучение B-деревьев!
- Tech Talk: Введение в B-деревья, Джошуа Маас-Ховард
- BTrees, профессор Джеймс Аспнес
- 2–3 Trees and B-Trees — Recitation Notes, профессора Эрик Демейн, Шрини Девадас и Нэнси Линч
- B-Tree | Набор 1 (Введение), Geeksforgeeks
- Визуализация B-деревьев, профессор Дэвид Галлес
§ 156.09.B Сохранение деревьев
§ 156.09.B Сохранение деревьев
1.Применимость. Существующие деревья не могут быть удалены, полностью или частично, без предварительного согласования с администратором зонирования плана сохранения и удаления деревьев, как описано в данном документе. Ничто в этом разделе не распространяется на вырубку деревьев, находящихся в частной собственности на участке, на котором расположено одноквартирное или двухквартирное жилище.
а. Процедура. Утверждение администратора зонирования должно быть подтверждено в письменной форме с указанием дерева, для которого разрешено удаление.Такое письменное разрешение не требуется, если удаление осуществляется сотрудниками Village, подрядчиками Village или агентами Village.
г. Критерии удаления взрослых деревьев. Должны быть предприняты все разумные усилия для сохранения существующих деревьев в вышеупомянутом исследовании деревьев путем интеграции этих деревьев в план участка и ландшафтный план для предлагаемого развития. Администратор зонирования должен определить, что перед выдачей разрешения на удаление зрелого дерева применяется один из следующих критериев:
(1) Дерево мертвое, умирающее, больное или представляет угрозу для здоровья или безопасности населения.
(2) Дерево мешает предоставлению общественных услуг или представляет опасность для дорожного движения.
(3) Расположение дерева предотвращает развитие или повторную разработку, которые не могут быть предназначены для защиты дерева.
2. Стандарты замены. Взрослые деревья, подлежащие удалению, должны быть заменены в соответствии со следующими стандартами. См. Рисунок 156.09.B-A. Измерение дерева и таблица 156.09.B-A. Скорость замены деревьев.
а. Скорость замены. Удаляемое дерево должно быть заменено в течение одного года с даты утверждения, или заявитель должен немедленно выплатить Деревне сумму, равную полной стоимости удаляемого дерева, по усмотрению Администратора зонирования.
(1) Любое дерево, предназначенное для удаления в утвержденном Плане сохранения и удаления деревьев, должно заменяться со скоростью, указанной в Таблице 156.09.B-A. Скорость замены деревьев. (2) В случае, если дерево, предназначенное для консервации, разрушено, повреждено или удалено в процессе строительства, такое дерево должно быть заменено с трехкратной применяемой скоростью, указанной в Таблице 156.09.B-A. Скорость замены деревьев.
г. Оценка дерева. Стоимость полного замещающего дерева составляет 300 долларов за каждое дерево или определяется администратором зонирования в соответствии с методами оценки, разработанными Советом оценщиков деревьев и ландшафтов и опубликованными Международным обществом лесоводства в последнем Руководстве по оценке растений, в зависимости от того, что меньше, или договорная стоимость, утвержденная Советом деревни.
Рисунок 156.09.B-A. Измерение деревьев Таблица 156.09.B-A. Частота замены деревьев
30 или выше | 6 | |
13-29 | 0002 09 | 02094 |
8. (10 баллов) Покажите B-деревья четвертого порядка, полученные в результате загрузки следующих наборов…
Вопрос 4. (20 баллов, по 10 баллов) Рассмотрим индекс дерева B + порядка d 2 …
Вопрос 4. (20 баллов, по 10 баллов каждый) Рассмотрим индекс дерева B + порядка d 2, показанный ниже. Предположим, что левый порядок, а правый — для. Если вы можете заимствовать у обоих братьев и сестер, выберите правого брата. Ответьте на эти вопросы: s Корень 50 73 85 8 18324o 256810 * 18 * 27 32 39 73 80 * 41 45 * 52 58 91 99 * a) Показать дерево B + после вставки данных с ключом 7 в исходное дерево.б) Показать …
3. (20 баллов) Решите следующие три задачи на помеченных деревьях 8) (3 Рисунок 3: Деревья Th. …
3. (20 баллов) Решите следующие три задачи на помеченных деревьях 8) (3 Рисунок 3: Деревья Th. T. Ti для задачи 3 (a). (A) (8 баллов) Найдите код Прюфера, связанный с тремя деревья, изображенные на рисунке Деревья обозначены Ti, Ta и T; слева направо. (b) (8 баллов) Нарисуйте помеченные деревья, связанные со следующими тремя кодами Прифера (e) (4 балла) Сколько помеченных деревьев там с 7 узлами?
3.(20 …
пожалуйста, мне нужно срочно спасибо алгоритмы
2 дерева двоичного поиска — 10 баллов (по 5 баллов каждое) …
пожалуйста, мне нужно срочно спасибо алгоритмы
2 дерева двоичного поиска — 10 баллов (по 5 баллов) 1. Напишите псевдокод для алгоритма, который берет корень двоичного дерева и возвращает, является ли дерево допустимым деревом двоичного поиска. 2. Напишите псевдокод для алгоритма, который берет корень двоичного дерева поиска и печатает ключи в отсортированном порядке.
Вопрос II — Обход графа и минимальные остовные деревья [40 баллов] Рассмотрим следующий график: B …
Вопрос II — Обход графа и минимальные связующие деревья [40 точек] Рассмотрим следующий граф: B 10 1 4 1 H 9 4 a) Обход графа, начиная с вершины A, и используя алгоритм поиска в ширину. Покажите результат обхода и используемую структуру данных. [10 баллов] б) Обойдите граф, начиная с вершины A, и используя алгоритм поиска в глубину (пост-порядок).Покажите результат обхода и используемую структуру данных. [10 баллов] c) Подать заявку …
3. (20 баллов) Решите следующие три задачи на помеченных деревьях 8) (3 Рисунок 3: …
3. (20 баллов) Решите следующие три задачи на помеченных деревьях 8) (3 Рисунок 3: Деревья Th. T. Ti для задачи 3 (a). (A) (8 баллов) Найдите код Прюфера, связанный с тремя деревья, изображенные на рисунке Деревья обозначены Ti, Ta и T; слева направо. (b) (8 баллов) Нарисуйте помеченные деревья, связанные со следующими тремя кодами Прифера (e) (4 балла) Сколько помеченных деревьев там с 7 узлами?
Для показанного ниже леща найдите следующее: a.Ваша конкретная нагрузка и размер b ….
Для показанного ниже леща найдите следующее: a. Ваша конкретная нагрузка и размер b. Поддерживающие реакции c. Значения внутреннего сдвига и изгибающего момента слева и справа от C d. Диаграммы срезающих и изгибающих моментов 8 15 кн ПКН УДЛ. KN / M = = А BA С 2 м 2 м 4 м 4 м P1 P2 UDL1 Первая буква вашего имени Первая буква вашей фамилии Вторая буква вашей фамилии A-G …
Пожалуйста, объясните шаги 8.Покажите, что порядок, в котором элементы перечислены в наборе, не имеет значения. Используйте наборы для определения …
Пожалуйста, объясните шаги
8. Покажите, что порядок, в котором элементы перечислены в наборе, не имеет значения. Используйте множества, чтобы определить понятие упорядоченной пары и доказать, что ваше определение работает. Это означает показать, что если =
8. Покажите, что порядок, в котором элементы перечислены в наборе, не имеет значения. Используйте наборы для определения …
Рассмотрим реляционные схемы, приведенные ниже, и соответствующие наборы функциональных зависимостей va…
Напишите полное доказательство.
Рассмотрим реляционные схемы, приведенные ниже, и соответствующие наборы функциональных зависимостей, действительные в схемах. Для каждой из реляционных схем определите наивысшую нормальную форму, которая действительна для схемы. Обоснуйте свой ответ. Если схемы нет в BCNF, разложите ее на минимальное количество схем, чтобы каждая из них находилась в BCNF. Обоснуйте свои ответы. Обоснование должно включать вывод минимальных ключей из …
покажи свое дерево ясно
Даны четыре набора с приоритетами S1 {10, 15, 3, 8, 20, 5, 17 ,…
покажи свое дерево ясно
Даны четыре набора с приоритетами S1 {10, 15, 3, 8, 20, 5, 17, 15, 19, 12, 7, 113, s, — {18, 2, 16, 5, 9, 7, 12, 8 , 16, 9), s, — (10, 15, 3, 8, 20, 5) и S4 (16, 15, 9, 17, 12, 2, 6}
% PDF-1.4
%
1116 0 объект
>
эндобдж
xref
1116 78
0000000016 00000 н.
0000001915 00000 н.
0000005657 00000 н.
0000005903 00000 н.
0000006313 00000 н.
0000006708 00000 п.
0000006952 00000 п.
0000007007 00000 н.
0000007200 00000 н.
0000007255 00000 н.
0000007427 00000 н.
0000007723 00000 н.
0000007920 00000 н.
0000008178 00000 н.
0000008269 00000 н.
0000008842 00000 н.
0000008919 00000 н.
0000009323 00000 п.
0000010195 00000 п.
0000010262 00000 п.
0000010762 00000 п.
0000018120 00000 н.
0000018684 00000 п.
0000018911 00000 п.
0000019205 00000 п.
0000019260 00000 п.
0000019724 00000 п.
0000019779 00000 п.
0000019834 00000 п.
0000019858 00000 п.
0000021126 00000 п.
0000021149 00000 п.
0000022190 00000 п.
0000022213 00000 п.
0000023198 00000 п.
0000023221 00000 п.
0000024232 00000 п.
0000024255 00000 п.
0000025259 00000 п.
0000025282 00000 п.
0000026301 00000 п.
0000026917 00000 п.
0000027277 00000 н.
0000027397 00000 н.
0000027709 00000 н.
0000028134 00000 п.
0000033583 00000 п.
0000033933 00000 п.
0000034515 00000 п.
0000035019 00000 п.
0000043875 00000 п.
0000044253 00000 п.
0000044674 00000 п.
0000045309 00000 п.
0000046183 00000 п.
0000046605 00000 п.
0000046850 00000 п.
0000048224 00000 п.
0000053050 00000 п.
0000053415 00000 п.
0000053682 00000 п.
0000053705 00000 п.
0000054747 00000 п.
0000055002 00000 п.
0000055202 00000 п.
0000055457 00000 п.
0000055866 00000 п.
0000056103 00000 п.
0000056127 00000 п.
0000057301 00000 п.? o? b]
B-дерево.B-деревья — специализированное многостороннее дерево, разработанное специально для использования на диске. В B-дереве каждый узел может содержать большое количество ключей. Номер.
Презентация на тему: «B-дерево. B-деревья — специализированное многостороннее дерево, разработанное специально для использования на диске. В B-дереве каждый узел может содержать большое количество ключей. Число». — Стенограмма презентации:
ins [data-ad-slot = «4502451947»] {display: none! important;}}
@media (max-width: 800px) {# place_14> ins: not ([data-ad-slot = «4502451947»]) {display: none! important;}}
@media (max-width: 800px) {# place_14 {width: 250px;}}
@media (max-width: 500 пикселей) {# place_14 {width: 120px;}}
]]>
1
B-дерево
2
B-деревья — специализированное многостороннее дерево, разработанное специально для использования на диске. В B-дереве каждый узел может содержать большое количество ключей.Таким образом, количество поддеревьев каждого узла также может быть большим. B-дерево разработано так, чтобы разветвляться в этом большом количестве направлений и содержать много ключей в каждом узле, так что высота дерева относительно мала.
3
Определения B-дерево порядка m (максимальное количество дочерних элементов для каждого узла) — это дерево, которое удовлетворяет следующим свойствам: 1. Каждый узел имеет не более m дочерних элементов. 2. Каждый узел (кроме корня и листьев) имеет не менее ceil (m⁄2) дочерних узлов.3. У корня есть как минимум два потомка, если это не листовой узел. 4. Все листья появляются на одном уровне и несут информацию. 5. Нелистовой узел с k дочерними элементами содержит k – 1 ключ 6. Каждый листовой узел (кроме корневого узла, если он является листовым) должен содержать не менее ceil (m / 2) — 1 ключей 7. Ключи и поддеревья расположены в виде дерева поиска
4
Пример — B-дерево порядка 5
5
B-дерево — поиск Поиск выполняется обычным образом, аналогично тому, как это делается в двоичном дереве поиска.Начиная с корня, дерево просматривается сверху вниз, выбирая дочерний указатель, значения разделения которого находятся по обе стороны от значения, которое ищется. Двоичный поиск обычно (но не обязательно) используется в узлах для поиска интересующих значений разделения и дочернего дерева.
6
Вставка B-дерева При вставке элемента сначала выполните поиск его в B-дереве. Если элемент еще не находится в B-дереве, этот неудачный поиск завершится на листе.Если на этом листе есть место, просто вставьте сюда новый элемент. Обратите внимание, что для этого может потребоваться переместить некоторые существующие ключи на один вправо, чтобы освободить место для нового элемента. Если вместо этого этот листовой узел заполнен, так что нет места для добавления нового элемента, тогда этот узел должен быть «разделен» так, чтобы примерно половина ключей перешла в новый узел справа от этого. Средний (средний) ключ перемещается вверх в родительский узел. (Конечно, если в этом узле нет места, его, возможно, также придется разделить.) Обратите внимание, что при добавлении к внутреннему узлу нам, возможно, придется переместить не только некоторые ключи на одну позицию вправо, но и связанные указатели. также должны быть перемещены вправо.Если корневой узел когда-либо разделяется, средний ключ перемещается вверх в новый корневой узел, что приводит к увеличению высоты дерева на единицу.
7
Пример вставки Вставьте следующие буквы в то, что изначально является пустым B-деревом порядка 5: C N G A H E K Q M F W L T Z D P R X Y S Порядок 5 означает, что узел может иметь максимум 5 дочерних элементов и 4 ключа. Все узлы, кроме корневого, должны иметь как минимум 2 ключа.
8
Пример вставки — продолжение Первые 4 буквы вставляются в один и тот же узел, в результате получается следующее изображение: Вставьте H (в узле выше нет места, разделите его на 2 узла, переместите медианное G вверх в новый корневой узел)
9
Пример вставки — продолжение Вставьте E, K и Q Вставьте M (разделите узел, M — медиана, переместите вверх)
10
Пример вставки — продолжение Вставить F, W, L и T Вставить Z (разделить, переместить среднюю точку T вверх)
11
Пример вставки — продолжение Вставить D (разделить, переместить медианное D вверх), затем вставить P, R, X, Y Вставить S (разделить, переместить медианное значение Q вверх, разделить, переместить медианное значение M вверх)
12
B-Tree Deletion находит и удаляет элемент, затем реструктурирует дерево, чтобы восстановить его инварианты. При удалении элемента следует учитывать два особых случая: 1.элемент во внутреннем узле может быть разделителем для его дочерних узлов 2. удаление элемента может поместить его под минимальное количество элементов и потомков
13
Удаление B-дерева Поиск значения для удаления Если значение находится во внутреннем узле, выберите новый разделитель (либо самый большой элемент в левом поддереве, либо наименьший элемент в правом поддереве), удалите его из конечного узла. in и замените удаляемый элемент новым разделителем (для конечного узла с удаленным элементом, как в случае ниже). Если значение находится в листовом узле, его можно просто удалить из узла, возможно, оставив узел слишком мало элементов; поэтому потребуются некоторые дополнительные изменения в дереве
14
Удаление B-дерева Дополнительные изменения — Повторная балансировка после удаления Если у правого брата больше, чем минимальное количество элементов Заимствовать один, настроить разделитель В противном случае, если у левого брата больше, чем минимальное количество элементов Заимствовать один, настроить разделитель Если у обоих непосредственных братьев и сестер есть только минимальное количество элементов. * Создайте новый узел со всеми элементами из недостающего узла, всеми элементами из одного из его братьев и сестер и разделителем в родительском элементе между двумя объединенными одноуровневыми узлами.* Удалите разделитель из родительского элемента и замените два дочерних элемента, разделенных им, объединенным узлом. * Если это приводит к тому, что количество элементов в родительском элементе становится меньше минимума, повторите эти шаги с этим недостающим узлом, если только это не корень, поскольку корень может быть неполным.
15
Пример удаления B-дерева Удалить H
16
Пример удаления — продолжение Удалить T (внутренний узел, выберите наименьший элемент из правого поддерева, чтобы заменить T)
17
Пример удаления — продолжение Удалить R (листовой узел, требуется перебалансировка после удаления: заимствовать ключ у правого брата, настроить разделитель: переместить W вниз, объединить с S, переместить X вверх к родительскому элементу
18
Пример удаления — продолжение Удалить E (листовой узел, требуется перебалансировка после удаления) Левый и правый родственники имеют только минимальные ключи, Создать новый узел: объединить с левым братом, разделителем от родителя и дефектным узлом
19
Пример удаления — продолжение Продолжить перебалансировку У одноуровневого узла есть только минимальные ключи. Создайте новый узел: объедините недостающий узел с разделителем от родительского и правого одноуровневого узла.
20
2-3 B-дерева или просто тринарное дерево свойств 2-3 деревьев — 3 или меньше дочерних элементов на узел каждый узел является либо 2-узлом, либо 3-узлом (количество поддеревьев) 2 узла содержат 1 значение и 3 узла содержат 2 отсортированных свойства BST для содержимого узла и левого, среднего и правого поддеревьев, все листья имеют одинаковый уровень
21 год
B-дерево B-дерево поддерживается сбалансированным за счет требования, чтобы все внешние узлы находились на одной глубине.Эта глубина будет медленно увеличиваться по мере добавления элементов к дереву, но увеличение общей глубины происходит нечасто и приводит к тому, что все конечные узлы оказываются еще на один узел дальше от корня. B-деревья имеют существенные преимущества перед альтернативными реализациями, когда время доступа к узлу намного превышает время доступа внутри узлов. Обычно это происходит, когда большинство узлов находятся во вторичной памяти, например на жестких дисках. При максимальном увеличении количества дочерних узлов в каждом внутреннем узле высота дерева уменьшается, балансировка происходит реже и повышается эффективность.Обычно это значение устанавливается таким образом, что каждый узел занимает полный дисковый блок или аналогичный размер во вторичной памяти. 2-3 B-дерева: полезно в основной памяти
22
2-3 Реализация дерева открытый класс TwoThreeTree {private boolean is2node; частный контент smallContent; частный контент bigContent; частный TwoThreeTree слева; частный TwoThreeTree mid; частное право TwoThreeTree; частный родитель TwoThreeTree ;…}
23
B + -Tree Как эти модификации влияют на производительность … поиска? Способы улучшения B-дерева, чтобы все значения в листьях образовывали связанный список узлов листьев … вставка или удаление?
24
B + Tree Дерево B + является вариантом B-дерева, все записи хранятся на уровне листьев дерева; только ключи хранятся во внутренних узлах.B-дерево может хранить как ключи, так и записи в своих внутренних узлах; в этом смысле B + -дерево является специализацией B-дерева.
Masstree: удобное для кеширования мэшап попыток и B-деревьев
Мастерство кеширования для быстрого многоядерного хранилища значений ключей
Mao et. др., EuroSys 2012
[бумага, код]
Большая идея
Рассмотрим проблему хранения в памяти миллионов пар (ключ, значение)
, где ключ
— это
строка переменной длины.Если бы мы просто хотели поддерживать поиск точек, мы бы использовали хеш-таблицу. Но
предполагая, что мы хотим поддерживать запросы диапазона, вероятно, потребуется какая-то древовидная структура. Один
кандидатом может быть традиционное B + -дерево.
В таком B + -дереве количество уровней дерева остается небольшим благодаря тому, что
каждый узел имеет большое разветвление. Однако это означает, что большое количество ключей упаковано в
один узел, поэтому при поиске по-прежнему необходимо выполнять большое количество ключевых сравнений.
через дерево.
Это еще больше усугубляется ключами переменной длины (например, строками), когда стоимость ключа
сравнений может быть довольно много. Если ключи действительно длинные, каждый из них может занимать несколько кешей.
строк, и поэтому сравнение двух из них может действительно испортить расположение вашего кеша.
В этом документе предлагается эффективная древовидная структура данных, основанная на разделении ключей переменной длины.
в переменное количество ключей фиксированной длины, называемых срезами . Когда вы спускаетесь по дереву, вы сравниваете
первый фрагмент каждого ключа, затем второй, затем третий и так далее, но каждое сравнение имеет
постоянная стоимость .
Например, представьте себе шнурок , когда быстрая коричневая лисица перепрыгивает через ленивую собаку
. Эта строка
состоит из следующих 8-байтовых срезов: quic
, k brown_
, fox jump
, s over t
, he lazy_
и наконец собака
. Чтобы найти строку в дереве, вы можете найти все строки, соответствующие первой
сначала срез, а затем ищите второй фрагмент только в строках, соответствующих первому фрагменту, и поэтому
on — в любое время сравнивается только подмножество ключа фиксированного размера размером .Это намного эффективнее, чем
снова и снова сравнивая длинные строки друг с другом. Уловка состоит в том, чтобы спроектировать структуру, которая
использует преимущества кеширования при выполнении этих сравнений фиксированного размера, не теряя
компромисс, основанный на большой мощности «алфавита» среза. Введите Masstree .
Masstrees: смесь попыток и B + -деревьев
Разделение ключей на строки фиксированной длины означает, что вы можете рассматривать строку как конкатенацию
«Буквы», взятые из очень большого алфавита (8-байтовых строк).k \) возможные следующие переходы очень
эффективно. Здесь мы можем использовать B + -дерево нашего друга! Идея состоит в том, чтобы сделать каждый узел в дереве своим
собственное B + -дерево. По сравнению с попытками, B + -деревья отлично подходят для компактного представления своего дочернего элемента.
указатели с использованием диапазонов ; при этом они отказываются от возможности индексироваться в постоянное время, но
вместо этого используйте логарифмическое время для поиска. В B + -дереве любого trie-узла мы ищем только фиксированный
«Срез» (или буква в 8-байтовом алфавите) — поиск указывает на B + -дерево, которое нужно искать
следующий срез в ключе.
Структура, полученная в результате реализации этой схемы, называется Masstree . В статье описывается
это как «тривиальное объединение B + -деревьев». Каждый уровень дерева является «слоем».
«Структура дерева эффективно поддерживает длинные ключи с общими префиксами; структуры B + -дерева
эффективно поддерживают короткие ключи и мелкозернистый параллелизм, а их средний разветвление использует кеш
линий эффективно. »
Masstree как дерево (2-байтовые срезы)
На приведенной выше диаграмме строка CCAA
будет найдена в узле Layer 1 / Slice 0: BA-> CC
.В
строка AABBCC
будет найдена в узле Layer 2 / Slice 1: BA-> CC
.
Masstree против B + -деревьев
Если вы не включаете весь ключ в каждый узел, результирующее дерево, естественно, должно быть глубже. Так
Разве массивы не станут менее эффективными для поиска ключей?
Более конкретно: представьте, что вы храните \ (N \) ключей длины \ (l \). Сбалансированное B + -дерево будет иметь
глубина \ (O (log N) \). Masstree разделит эти ключи на части длиной \ (k \), поэтому
состоят из \ (l / k \) деревьев, каждое из которых может иметь высоту до \ (log (N) \).Итак, общая высота
массива — это \ (O (l.log (N)) \).
Но вот в чем разница: группа будет выполнять фиксированных сравнений затрат на каждом уровне, поскольку
длина каждого ломтика фиксированная. B + -дерево, с другой стороны, должно каждые
время; поскольку длина ключа равна \ (l \), это означает, что общая стоимость сравнения составляет , также
\ (O (l.log (N)) \).
В случае, когда строки имеют общие префиксы (например, URL-адреса), первые несколько уровней
masstree будут в основном постоянными по размеру (потому что первый 8-байтовый фрагмент
http: // www.google.com
— это http: // w
, что является общим для миллионов веб-сайтов). В пределе только
последнее постоянное количество слоев будет иметь записи, пропорциональные количеству строк в
база данных, когда строки имеют расходящиеся суффиксы. В этом случае стоимость поиска в массиве
падает до \ (O (l + log (N)) \) (но прямое B + -дерево по-прежнему будет иметь стоимость \ (O (l.log (N)) \)).
Подробности реализации
Массовое дерево реализовано почти как обычное B + -дерево. Различия в том, что подмножество
Ключ для сравнения изменяется по мере движения вниз по дереву, и эти листовые узлы могут содержать указатели
до значений (как обычно в B + -дереве) или до следующего уровня .
Пограничные узлы (т.е. листья, которые могут указывать на другие B + -деревья) имеют родственные связи для поддержки эффективных
диапазон запросов.
Большая часть интересных деталей реализации связана с контролем параллелизма (см. Разделы 4.4, 4.5
и 4.6). Masstree предназначен для поддержки одновременного доступа с высокой пропускной способностью без сегментирования. Некоторые
примечания от их подхода:
Параллелизм
- Читатели никогда не теряют обновления: всегда будут видеть реальную недавнюю ценность, а не путешествие во времени.
- Писатели блокируют друг друга, потому что стоимость неконтролируемой блокировки примерно такая же, как и
сравнивать и менять местами, а блокировки удерживаются только на короткое время (потому что предположительно все узлы находятся в
объем памяти).Положение ключа th в отсортированных ключах
множество. - Перестановка умещается внутри 64-битного целого числа, поэтому ее можно записать атомарно. Это означает, что
вставка ключа в середину существующих ключей в отсортированном порядке может быть выполнена а) добавлением
ключ в конец несортированного массива б) переписать перестановку локально, а затем в) публикация
перестановку, записав ее обратно, чтобы другие читатели и писатели могли ее увидеть. - Во время описанного выше процесса недопустимое промежуточное состояние не может наблюдаться; запись перестановки
является атомарной точкой линеаризации (а не «нечестивым беспорядком» :)).
А как насчет так называемой «хитрости тайников»?
«Во-первых, Masstree должен эффективно поддерживать множество распределений ключей, включая двоичные файлы переменной длины.
ключи, где многие ключи могут иметь длинные общие префиксы. Во-вторых, для высокой производительности и
масштабируемость, Masstree должен разрешать мелкозернистый параллельный доступ, а его операции получения должны
никогда не загрязняйте строки общего кэша, записывая общие структуры данных. В-третьих, макет Masstree должен
поддерживают предварительную выборку и размещают важную информацию по небольшому количеству строк кэша.В
второе и третье свойства вместе составляют хитрость тайника ».
- Сравнение ключей фиксированного размера может быть выполнено с помощью SIMD (не упоминается в документе, возможно, не является выигрышным)
- Пограничные узлы имеют размер 256 байт, поэтому помещаются в четыре строки кэша (большая часть из которых — данные ключ / значение).
- Таким образом, линейный поиск по набору ключей демонстрирует хорошую локальность кэша.
- Предварительная выборка всего узла перекрывает поисковые вычисления с задержками памяти и помогает с
пропускная способность. - Операции Get действительно не загрязняют никакое совместно используемое состояние.
Оценка
Наиболее интересным является факторный анализ, который показывает, что происходит, если сравнивать Masstree с системой.
где одно из требований ослаблено. Это показывает стоимость реализации этого требования.
в массиве:
- По сравнению с B + -деревом, поддерживающим только ключи фиксированного размера, массивы примерно на 1% медленнее
- Ключи с общими префиксами поддерживают высокую пропускную способность, даже если массивы могут стать
«Внешне» несбалансированный. - Range запросы кажутся по своей сути дорогими — массивы в 2,5 раза медленнее, чем прямой хэш
стол.
«Производительность Masstree определяется задержкой выборки узлов дерева из DRAM»
Для массивного дерева выбирается больше узлов, чем для B + -дерева, но каждый узел B + -дерева толще из-за
ключи побольше, так что это может быть стирка.
- Только в памяти — увеличенная глубина дерева предположительно уменьшает многие преимущества
masstree, так как время ожидания при доставке намного выше. - Кажется, довольно сложно заполнить массив — вам нужно, чтобы строки расходились от каждого
другой на каждом «кусочке». Интересно, есть ли на практике довольно многоуровневые слои.
пусто, поэтому во многих случаях стоимость поиска лучше, чем верхняя граница. - Внутренние и граничные узлы имеют разные размеры, так почему же один и тот же разветвитель?
- Насколько это хуже (или лучше?), Чем B + -дерево, когда набор данных превышает объем основной памяти?
Более дорогие загрузки (и их большее количество) должны замедлить массовые потоки.
Деревья, B-деревья, B + деревья и H-деревья
B + Tree
B-деревья используются для поиска различных данных. Некоторые файловые системы используют B + Tree для поиска каталогов, дескрипторов экстентов, распределения файлов и даже поиска файлов. В будущем B + Tree может использоваться для поиска большего количества типов данных в файловых системах.
Во-первых, давайте посмотрим на дерево, и мы будем использовать буквы для обозначения файлов (C, F, L, N, P и Z). Дерево — это древовидная структура (перевернутая, как говорит большинство людей), которая состоит из одного корневого узла, дочерних узлов и листовых узлов.Каждый узел содержит ключ и указатель. Ключ — это элемент поиска, например имя файла. Указатель данных для ключевых указывает на фактические данные. Итак, глядя на рисунок 1, предположим, что файл L вводится первым в дереве.
РИСУНОК 1
Следующий добавляемый файл — это файл C.Файл C добавляется под корневым узлом и слева, поскольку его значение меньше корневого (C
РИСУНОК 2
Нам осталось добавить 3 файла, поэтому давайте добавим файлы F, N и P, как показано на рисунке 3.
РИСУНОК 3
В этом случае дерево не сбалансировано; то есть справа от корня больше узлов, чем слева.В некоторых случаях это может быть нормально. Если вы обращаетесь к файлу L чаще, чем к другим, поиск будет происходить очень быстро. Конечно, если количество файлов в некоторых файловых системах превышает 10 000, это дерево будет довольно большим.
На рисунке 3 узел L является корневым узлом. Узел C является дочерним узлом (как и узлы Z и N). Узлы F и P являются конечными узлами. Листовые узлы — это узлы на конце, у которых нет дочерних узлов. Узел C считается родительским для узлов F. Узел L (корень) является родительским для узлов C и Z.
В крайнем случае корнем может быть файл Z, за которым следует дочерний узел файла P, затем N, L, F и, наконец, C, как показано на рисунке 4.Макет приведет к очень несбалансированному дереву, что, скорее всего, вызовет длительный поиск.
РИСУНОК 4
Теперь B-Tree использует больше ключей в узле, иначе называемом порядком. Если узел B-дерева содержит пять указателей, это B-дерево порядка 5. Давайте посмотрим на пример корня B-дерева, как показано на рисунке 5.
РИСУНОК 5
Точки представляют собой указатели, а числа представляют значения ключей (имена файлов и т. Д.). Обратите внимание, что для этого узла каждый ключ имеет партнерский указатель: ключ-1 и указатель-1, ключ-2 и указатель-2 и т. Д.Если вы посмотрите на рисунок 5, вы заметите, что есть дополнительный указатель (указатель-0). Дерево работает аналогично обычному дереву. Если искомый элемент меньше Key-1, будет следовать Pointer-0. Если элемент поиска больше или равен Key-1 и меньше Key-2, мы следуем Pointer-1. Если элемент поиска больше или равен Key-2 и меньше Key-3, мы следуем Pointer-2.
Например, если бы мы искали номер 1, мы следовали бы по указателю-0. Если бы мы искали 12, мы бы следовали за указателем-2.Следуя этим указателям, мы переходим к другому узлу для выполнения той же задачи и так далее, пока не дойдем до листа, содержащего искомое значение. Значение поиска указывает на наш файл, который мы ищем, или элемент поиска не найден, и возвращается сообщение об ошибке.
Взгляните на Рисунок 6 для следующего примера.
РИСУНОК 6
Допустим, мы ищем 5. Мы начинаем с корневого узла и определяем, меньше ли значение поиска, чем Key-1 (3). Поскольку это не так, мы видим, находится ли значение поиска между ключом-1 (3) и ключом-2 (9), поэтому мы следуем за указателем-1.На этом узле мы проверяем, меньше ли значение поиска, чем Ключ-1 (5), это не так. Наше значение поиска равно Key-1 (5), поэтому мы следуем за указателем-1 и находим два листовых узла (5 и 6). Первое значение соответствует нашему поиску, поэтому мы используем значение в листовом узле, чтобы перейти к файлу, который мы искали.
Теперь предположим, что мы ищем Файл-18. Мы начинаем с корня и следуем за указателем-2, поскольку значение нашего поиска больше или равно ключу-2 (9). На следующем узле у нас есть три ключевых значения, которые нужно проверить: 10, 15 и 22.Мы знаем, что 18 больше, чем 10 и 15, поэтому мы можем пропустить Pointer-0 и Pointer-1, и мы будем следовать Pointer-2. В конечных узлах мы находим два листа, 15 и 20. Файл 18 не существует, и сообщение может предупредить пользователя о том, что такого файла нет.
ПРИМЕЧАНИЕ : Имейте в виду, что эти поиски обычно выполняются очень быстро. Вы можете увидеть, как дерево может обеспечить более быстрый поиск, чем просмотр всего последовательного файла.
Теперь перейдем к более сложным частям: вставке и удалению.Для рисунка 6 добавим File-12. Первое, что делается при вставке или удалении, — это поиск записи, которая вставляется или удаляется. Это делается по определенным причинам:
- Вставка — запись еще не должна существовать
- Удаление — запись уже должна существовать
Если запись для вставки существует или запись для удаления не существует, создается сообщение. В случае индексированного списка файлов для файловой системы, если существует файл, который мы копируем на жесткий диск, мы получаем запрос с просьбой перезаписать файл (он был найден в B-дереве).Если мы хотим удалить файл, который не существует, мы получаем сообщение об ошибке, что файл не существует.
Теперь перейдем к деталям вставки File-12; если вы посмотрите на рисунок 6, мы проследим за указателем-2 к следующему узлу. File-12 больше Key-1 (9) и меньше Key-2 (15), поэтому мы следуем Pointer-1. Теперь мы находим два листовых узла (10 и 14). Файл-12 должен быть вставлен между ними, как показано на рисунке 7. Файл-12 помещается между листами, поскольку он идет туда, и, поскольку он находится между листом-10 и листом-14, никаких записей в узле делать не нужно. .
РИСУНОК 7
Теперь давайте посмотрим на возможность добавления File-8. Глядя на рисунок 7, мы видим, что File-8 будет искать от корня до Pointer-1. Файл-8 нигде не помещается в этот узел, поэтому необходимо создать другой ключ: Ключ-3 (8), как показано на рисунке 8.
РИСУНОК 8
Теперь мы можем попробовать другой. Добавим File-30. Следуя указателю-2 от корня, мы переходим к узлу, в котором осталось одно пространство, и туда добавляется файл-30, как показано на рисунке 9.
РИСУНОК 9
Что произойдет, если мы захотим добавить File-40? Что ж, если B-дерево имеет порядок 5, у нас может быть только пять указателей на узел.Добавив File-40, мы создадим узел с более чем пятью указателями. Чтобы выполнить вставку, мы берем заполненный узел и удаляем половину пар ключей и указателей. Затем эти записи будут помещены в новый узел. Все связанные листья также будут перемещены, как показано на рисунке 10.
ПРИМЕЧАНИЕ : Каждый узел должен содержать как минимум 2 ключа (за исключением корня).
РИСУНОК 10
Ключи (22 и 30) перемещены в новый узел. Наибольшее значение листа (20) добавляется к предыдущему узлу Key-3, так что теперь у нас есть новый верхний предел для узла.Key-2 теперь станет File-40 при вставке нового ключа. Первый ключ (30) нового узла должен быть помещен в корень и связанный с ним указатель. Как видите, File-22 и File-27 помещаются в листовые узлы с указателем Pointer-0.
ПРИМЕЧАНИЕ : Когда что-то меняется, эффект может «распространяться» до корневого узла. Это очень верно для больших B-деревьев, которые могут иметь более полные узлы.
Глядя на рисунок 10, если одна из следующих записей должна быть удалена (6, 9, 12, 14, 22 или 27), они могут быть удалены без каких-либо дальнейших действий.Будет выполнен поиск, и как только запись будет найдена, лист будет удален.
ПРИМЕЧАНИЕ : Если удалить файл 22, то корень будет состоять из записей 3, 9 и теперь 27 (наименьший лист в узле).
Например, удаление файла 9 из B-дерева приведет к рисунку 11.
РИСУНОК 11
Поскольку теперь самый маленький файл — это File-10, корневой узел изменится с 9 на 10.
Теперь давайте посмотрим, что произойдет, если мы удалим File-5. File-5 легко удалить, но это тоже ключ.Здесь также будет удален ключ. Клавиши (7 и 8) справа от клавиши будут перемещены влево. Любые не удаляемые листовые узлы (6) будут перемещены так, чтобы листья (3) находились влево, как показано на рисунке 12.
РИСУНОК 12
Если мы удалим File-30, произойдет то же самое, но ключ в корне изменится на новый Key-1 для узла, как показано на рисунке 13.
РИСУНОК 13
Если мы также удалим File-40, последний узел будет удален вместе с Key-3 в корневом узле, как показано на рисунке 14.Листы 22 и 27 можно переместить в левый узел.
РИСУНОК 14
Разница между B-деревом и B + Tree заключается в том, что B + Tree позволяет хранить данные только в листьях, тогда как B-Tree может хранить данные в узлах.