PH-tree
ಭೌಗೋಳಿಕ ನಿರ್ದೇಶಾಂಕಗಳು, ಬಿಂದುಗಳು, ವೈಶಿಷ್ಟ್ಯ ವಾಹಕಗಳು, ಆಯತಗಳು ಅಥವಾ ಬೌಂಡಿಂಗ್ ಪೆಟ್ಟಿಗೆಗಳಂತಹ ಬಹು-ಆಯಾಮದ ದತ್ತಾಂಶಗಳ (ಕೀಲಿಗಳು) ಪ್ರಾದೇಶಿಕ ಸೂಚ್ಯಂಕಕ್ಕಾಗಿ ಬಳಸಲಾಗುವ ಮರದ ದತ್ತಾಂಶ ರಚನೆಯು ಪಿ. ಎಚ್-ಟ್ರೀ ಆಗಿದೆ. ಪಿ. ಎಚ್.-ಮರವು ಬಾಹ್ಯಾಕಾಶ ವಿಭಜನೆಯ ಸೂಚ್ಯಂಕವಾಗಿದ್ದು, ಕ್ವಾಡ್ಟ್ರೀ ಅಥವಾ ಆಕ್ಟ್ರೀಯ ರಚನೆಯನ್ನು ಹೋಲುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಕ್ವಾಡ್ಟ್ರೀಸ್ಗಿಂತ ಭಿನ್ನವಾಗಿ, ಇದು ಟ್ರಿಗಳ ಆಧಾರದ ಮೇಲೆ ವಿಭಜನೆಯ ನೀತಿಯನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಕೀಲಿಗಳ ಬಿಟ್-ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಆಧರಿಸಿದ ಕ್ರಿಟ್ ಬಿಟ್ ಟ್ರೀಗಳಿಗೆ ಹೋಲುತ್ತದೆ. ಬಿಟ್-ಆಧಾರಿತ ವಿಭಜನೆಯ ನೀತಿಯು, ನೋಡ್ಗಳಿಗೆ ವಿವಿಧ ಆಂತರಿಕ ಪ್ರಾತಿನಿಧ್ಯಗಳ ಬಳಕೆಯೊಂದಿಗೆ ಸಂಯೋಜಿಸಿದಾಗ, ಉನ್ನತ-ಆಯಾಮದ ದತ್ತಾಂಶದೊಂದಿಗೆ ಸ್ಕೇಲೆಬಿಲಿಟಿಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಬಿಟ್-ಪ್ರಾತಿನಿಧ್ಯ ವಿಭಜನೆಯ ನೀತಿಯು ಗರಿಷ್ಠ ಆಳವನ್ನು ವಿಧಿಸುತ್ತದೆ, ಹೀಗಾಗಿ ಕ್ಷೀಣಿಸಿದ ಮರಗಳನ್ನು ತಪ್ಪಿಸುತ್ತದೆ ಮತ್ತು ಮರು ಸಮತೋಲನದ ಅಗತ್ಯವಿರುತ್ತದೆ. ಮೂಲಭೂತ ಪಿ. ಎಚ್.-ಮರವು ಒಂದು ಪ್ರಾದೇಶಿಕ ಸೂಚ್ಯಂಕವಾಗಿದ್ದು, ಪೂರ್ಣಾಂಕಗಳೊಂದಿಗೆ-ಆಯಾಮದ ವಾಹಕಗಳಾಗಿರುವ ಕೀಲಿಗಳನ್ನು ಬಳಕೆದಾರರ ವ್ಯಾಖ್ಯಾನಿತ ಮೌಲ್ಯಗಳಿಗೆ ನಕ್ಷೆ ಮಾಡುತ್ತದೆ. ಪಿಹೆಚ್-ಮರವು ಕ್ರಿಟ್ ಬಿಟ್ ಮರದ ಬಹು-ಆಯಾಮದ ಸಾಮಾನ್ಯೀಕರಣವಾಗಿದೆ, ಅಂದರೆ ಕ್ರಿಟ್ ಬಿಟ್ ಮರವು-ಆಯಾಮದ ಕೀಲಿಗಳನ್ನು ಹೊಂದಿರುವ ಪಿಹೆಚ್-ಮರಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆ. ಕ್ರಿಟ್ ಬಿಟ್ ಮರದಂತೆ, ಮತ್ತು ಇತರ ಪ್ರಾದೇಶಿಕ ಸೂಚ್ಯಂಕಗಳಿಗಿಂತ ಭಿನ್ನವಾಗಿ, ಪಿಹೆಚ್-ಮರವು ಬಹು ನಕ್ಷೆಯ ಬದಲು ನಕ್ಷೆಯಾಗಿದೆ. ಎ-ಡೈಮೆನ್ಷನಲ್ ಪಿಎಚ್-ಟ್ರೀ ಎಂಬುದು ನೋಡ್ಗಳ ಒಂದು ಮರವಾಗಿದ್ದು, ಅಲ್ಲಿ ಪ್ರತಿ ನೋಡ್ ವಿಭಾಗವು ಜಾಗವನ್ನು ಕ್ವಾಡ್ರಂಟ್ಗಳಾಗಿ ವಿಂಗಡಿಸುತ್ತದೆ (ಹೆಚ್ಚಿನ ಡೈಮೆನ್ಷನಲ್ ಡೇಟಾದೊಂದಿಗೆ ಎಷ್ಟು ದೊಡ್ಡ ನೋಡ್ಗಳು ಅಳೆಯುತ್ತವೆ ಎಂಬುದನ್ನು ಕೆಳಗೆ ನೋಡಿ). ಪ್ರತಿ ಕ್ವಾಡ್ರಂಟ್ ಗರಿಷ್ಠ ಒಂದು ನಮೂದನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಒಂದೋ ಕೀ-ವ್ಯಾಲ್ಯೂ ಜೋಡಿ (ಲೀಫ್ ಕ್ವಾಡ್ರಂಟ್) ಅಥವಾ ಕೀ-ಸಬ್ನೋಡ್ ಜೋಡಿ. ಕೀ-ಸಬ್ನೋಡ್ ಜೋಡಿಗೆ, ಕೀಲಿಯು ಸಬ್ನೋಡ್ನ ಕೇಂದ್ರವನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ. ಕೀಯು ಸಬ್ನೋಡ್ ಮತ್ತು ಅದರ ಚೈಲ್ಡ್ ಸಬ್ನೋಡ್ಗಳಲ್ಲಿನ ಎಲ್ಲಾ ಕೀಲಿಗಳ ಸಾಮಾನ್ಯ ಪೂರ್ವಪ್ರತ್ಯಯವಾಗಿದೆ (ಬಿಟ್-ಪ್ರಾತಿನಿಧ್ಯ). ಪ್ರತಿ ನೋಡ್ ಕನಿಷ್ಠ ಎರಡು ನಮೂದುಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ ಅದನ್ನು ಮೂಲ ನೋಡ್ನೊಂದಿಗೆ ವಿಲೀನಗೊಳಿಸಲಾಗುತ್ತದೆ. ಪಿ. ಎಚ್. ಮರಗಳ ಇತರ ಕೆಲವು ರಚನಾತ್ಮಕ ಗುಣಲಕ್ಷಣಗಳೆಂದರೆಃ ಅವು-ಆರಿ ಮರಗಳು. ಅವು ಅಂತರ್ಗತವಾಗಿ ಅಸಮತೋಲಿತವಾಗಿವೆ ಆದರೆ ಅವುಗಳ ಆಳವು ಕೀಲಿಗಳ ಬಿಟ್ ಅಗಲಕ್ಕೆ ಸೀಮಿತವಾಗಿರುವುದರಿಂದ ಅಸಮತೋಲನವು ಸೀಮಿತವಾಗಿದೆ, ಉದಾಹರಣೆಗೆ. 32 ಬಿಟ್ ಪೂರ್ಣಾಂಕಗಳನ್ನು ಹೊಂದಿರುವ-ಆಯಾಮದ ಕೀಲಿಗೆ 32. ಅಳವಡಿಕೆ ಅಥವಾ ತೆಗೆದುಹಾಕುವ ಕಾರ್ಯಾಚರಣೆಗಳು ನಿಖರವಾಗಿ ಒಂದು ನೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸಲು ಮತ್ತು ಎರಡನೇ ನೋಡ್ ಅನ್ನು ಸೇರಿಸಲು ಅಥವಾ ತೆಗೆದುಹಾಕಲು ಕಾರಣವಾಗುತ್ತವೆ. ಇದು ಏಕಕಾಲೀನ ಅನುಷ್ಠಾನಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಬಹುದು. ಇದರರ್ಥ ಮಾರ್ಪಾಡು ವೆಚ್ಚದಲ್ಲಿ ಸ್ವಲ್ಪ ವ್ಯತ್ಯಾಸವಿದೆ. ಅವುಗಳ ರಚನೆಯು ಅಳವಡಿಕೆ/ತೆಗೆದುಹಾಕುವ ಕ್ರಮದಿಂದ ಸ್ವತಂತ್ರವಾಗಿದೆ. ವಿಭಜನೆಯ ಕಾರ್ಯತಂತ್ರವು ಹೆಚ್ಚಿನ ಕ್ವಾಡ್ಟ್ರೀಗಳಂತೆಯೇ, ಪಿಹೆಚ್-ಟ್ರೀ ಎಂಬುದು ಪ್ರತಿ ನೋಡ್ ಎಲ್ಲಾ ಆಯಾಮಗಳಲ್ಲಿ ಜಾಗವನ್ನು ವಿಭಜಿಸುವ ನೋಡ್ಗಳ ಕ್ರಮಾನುಗತವಾಗಿದೆ. ಹೀಗಾಗಿ, ಒಂದು ನೋಡ್ ಪ್ರತಿ ಕ್ವಾಡ್ರಂಟ್ಗೆ ಒಂದು ಸಬ್ನೋಡ್ಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ಕ್ವಾಡ್ರಂಟ್ ನಂಬರಿಂಗ್ ಪಿಹೆಚ್-ಮರವು ಬಹು-ಆಯಾಮದ ಕೀಲಿಗಳ ತುಣುಕುಗಳನ್ನು ಮರದಲ್ಲಿ ಅವುಗಳ ಸ್ಥಾನವನ್ನು ನಿರ್ಧರಿಸಲು ಬಳಸುತ್ತದೆ. ಒಂದೇ ರೀತಿಯ ಪ್ರಮುಖ ಬಿಟ್ಗಳನ್ನು ಹೊಂದಿರುವ ಎಲ್ಲಾ ಕೀಲಿಗಳನ್ನು ಮರದ ಒಂದೇ ಶಾಖೆಯಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಹಂತದಲ್ಲಿರುವ ನೋಡ್ನಲ್ಲಿ, ಕೀಲಿಯನ್ನು ಎಲ್ಲಿ ಸೇರಿಸಬೇಕು (ಅಥವಾ ತೆಗೆದುಹಾಕಬೇಕು ಅಥವಾ ಮೇಲಕ್ಕೆ ನೋಡಬೇಕು) ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸಲು, ಅದು ಕೀಲಿಯ ಪ್ರತಿ ಆಯಾಮದ 's' ಬಿಟ್ ಅನ್ನು ನೋಡುತ್ತದೆ. 8 ಕ್ವಾಡ್ರಂಟ್ಗಳನ್ನು ಹೊಂದಿರುವ 3ಡಿ ನೋಡ್ಗೆ (ಕ್ಯೂಬ್ ಅನ್ನು ರೂಪಿಸುವ) ಕೀಲಿಯ ಮೊದಲ ಆಯಾಮದ 'ಸ್ ಬಿಟ್' ಗುರಿಯ ಕ್ವಾಡ್ರಂಟ್ ಕ್ಯೂಬ್ನ ಎಡಭಾಗದಲ್ಲಿದೆಯೇ ಅಥವಾ ಬಲಭಾಗದಲ್ಲಿದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ, ಎರಡನೇ ಆಯಾಮದ 'ಸ್ ಬಿಟ್' ಅದು ಮುಂಭಾಗದಲ್ಲಿದೆಯೇ ಅಥವಾ ಹಿಂಭಾಗದಲ್ಲಿದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ, ಮತ್ತು ಮೂರನೇ ಆಯಾಮದ 'ಸ್ ಬಿಟ್' ಕೆಳಭಾಗ ಮತ್ತು ಮೇಲ್ಭಾಗವನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ, ಚಿತ್ರವನ್ನು ನೋಡಿ. 1ಡಿ ಉದಾಹರಣೆ 8-ಬಿಟ್ ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಮೂರು 1ಡಿ ಕೀಲಿಗಳೊಂದಿಗೆ ಉದಾಹರಣೆಃ, ಮತ್ತು. ಖಾಲಿ ಮರಕ್ಕೆ ಸೇರಿಸುವುದರಿಂದ ಒಂದೇ ನೋಡ್ಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಎರಡು ಕೀಲಿಗಳು ಮೊದಲು ತಮ್ಮ 6 ನೇ ಬಿಟ್ನಲ್ಲಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ ಆದ್ದರಿಂದ ನೋಡ್ ಒಂದು ಮಟ್ಟವನ್ನು ಹೊಂದಿದೆ (0 ರಿಂದ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ). ನೋಡ್ ಎರಡೂ ಕೀಲಿಗಳ ಸಾಮಾನ್ಯ 5 ಬಿಟ್ಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುವ 5 ಬಿಟ್ ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಹೊಂದಿದೆ. ನೋಡ್ ಎರಡು ಕ್ವಾಡ್ರಂಟ್ಗಳನ್ನು ಹೊಂದಿದೆ, ಪ್ರತಿ ಕೀಲಿಯನ್ನು ಒಂದು ಕ್ವಾಡ್ರಂಟ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸಲಾಗುತ್ತದೆ. ಮೂರನೇ ಕೀಲಿಯನ್ನು ಒಂದು ಹೆಚ್ಚುವರಿ ನೋಡ್ನಲ್ಲಿ ಸೇರಿಸುವುದರಿಂದ ಒಂದು ಚತುರ್ಥಾಂಶವು ಮೂಲ ನೋಡ್ ಅನ್ನು ಸಬ್ನೋಡ್ ಆಗಿ ಮತ್ತು ಇನ್ನೊಂದು ಚತುರ್ಥಾಂಶವು ಹೊಸ ಕೀಲಿಯನ್ನು ಹೊಂದಿರುತ್ತದೆ. 2ಡಿ ಉದಾಹರಣೆ 2ಡಿ ಕೀಲಿಗಳೊಂದಿಗೆ ಪ್ರತಿ ನೋಡ್ ಕ್ವಾಡ್ರಂಟ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಕೀಲಿಯನ್ನು ಸಂಗ್ರಹಿಸಲಾಗಿರುವ ಚತುರ್ಥಾಂಶದ ಸ್ಥಾನವನ್ನು ಪ್ರತಿ ಆಯಾಮದಿಂದ ಒಂದು ಬಿಟ್ ಕೀಲಿಗಳ ಆಯಾ ಬಿಟ್ಗಳಿಂದ ಹೊರತೆಗೆಯಲಾಗುತ್ತದೆ. ನೋಡ್ನ ನಾಲ್ಕು ಚತುರ್ಭುಜಗಳು 2ಡಿ ಹೈಪರ್ಕ್ಯೂಬ್ ಅನ್ನು ರೂಪಿಸುತ್ತವೆ (ಚತುರ್ಭುಜಗಳು ಖಾಲಿಯಾಗಿರಬಹುದು). ಕೀಲಿಗಳಿಂದ ಹೊರತೆಗೆಯಲಾದ ಬಿಟ್ಗಳು ಫಾರ್ ಮತ್ತು ಫಾರ್ ಎಂಬ ಹೈಪರ್ಕ್ಯೂಬ್ ವಿಳಾಸವನ್ನು ರೂಪಿಸುತ್ತವೆ. ಇದು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ನೋಡ್ನ ಹೈಪರ್ಕ್ಯೂಬ್ನಲ್ಲಿ ಕ್ವಾಡ್ರಂಟ್ನ ಸ್ಥಾನವಾಗಿದೆ. ನೋಡ್ ರಚನೆಯು ನೋಡ್ನಲ್ಲಿನ ನಮೂದುಗಳ ಕ್ರಮವು ಯಾವಾಗಲೂ ಝಡ್-ಕ್ರಮವನ್ನು ಅನುಸರಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ನೋಡ್ನಲ್ಲಿನ ನಮೂದುಗಳನ್ನು ಗಾತ್ರದ ಸ್ಥಿರ ಗಾತ್ರದ ವ್ಯೂಹಗಳಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು. ನಂತರ ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕ್ವಾಡ್ರಂಟ್ನ ವ್ಯೂಹ ಸೂಚ್ಯಂಕವಾಗಿದೆ. ಇದು ಹುಡುಕಲು, ಸೇರಿಸಲು ಮತ್ತು ತೆಗೆದುಹಾಕಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ ಮತ್ತು ಸಂಗ್ರಹಿಸುವ ಅಗತ್ಯವಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಬಾಹ್ಯಾಕಾಶ ಸಂಕೀರ್ಣತೆಯು ಪ್ರತಿ ನೋಡ್ಗೆ ಇರುತ್ತದೆ, ಆದ್ದರಿಂದ ಇದು ಹೆಚ್ಚಿನ ಆಯಾಮದ ದತ್ತಾಂಶಕ್ಕೆ ಕಡಿಮೆ ಸೂಕ್ತವಾಗಿದೆ. ಡೈನಾಮಿಕ್ ಸರಣಿಗಳು ಮತ್ತು/ಅಥವಾ ಬಿ-ಮರಗಳಂತಹ ವಿಂಗಡಿಸಲಾದ ಸಂಗ್ರಹದಲ್ಲಿ ನಮೂದುಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು ಮತ್ತೊಂದು ಪರಿಹಾರವಾಗಿದೆ. ಇದು ಹುಡುಕಾಟ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ನಿಧಾನಗೊಳಿಸುತ್ತದೆ ಆದರೆ ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ. ಮೂಲ ಅನುಷ್ಠಾನವು ಕಡಿಮೆ ಮೆಮೊರಿಯನ್ನು ಬಳಸುವ ಸ್ಥಿರ ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ರಚನೆಯ ಪ್ರಾತಿನಿಧ್ಯದ ನಡುವೆ ಬದಲಾಯಿಸುವ ಮೂಲಕ ಕನಿಷ್ಠ ಮೆಮೊರಿ ಬಳಕೆಯನ್ನು ಗುರಿಯಾಗಿರಿಸಿಕೊಂಡಿದೆ. ಇತರ ಅನುಷ್ಠಾನಗಳು ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಬದಲಾಗುವುದಿಲ್ಲ ಆದರೆ ಹೆಚ್ಚಿನ ಆಯಾಮದ ದತ್ತಾಂಶಕ್ಕಾಗಿ ಸ್ಥಿರ ಸರಣಿಗಳನ್ನು, ಕ್ರಿಯಾತ್ಮಕ ಸರಣಿಗಳನ್ನು ಮತ್ತು ಬಿ-ಟ್ರೀಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಹುಡುಕಾಟ, ಅಳವಡಿಕೆ ಮತ್ತು ತೆಗೆದುಹಾಕುವ ಕಾರ್ಯಾಚರಣೆಗಳೆಲ್ಲವೂ ಒಂದೇ ರೀತಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆಃ ಸರಿಯಾದ ನೋಡ್ ಅನ್ನು ಹುಡುಕಿ, ನಂತರ ನೋಡ್ನಲ್ಲಿ ಕಾರ್ಯಾಚರಣೆಯನ್ನು ನಿರ್ವಹಿಸಿ. ಕಿಟಕಿ ಪ್ರಶ್ನೆಗಳು ಮತ್ತು-ಹತ್ತಿರದ-ನೆರೆಯ ಹುಡುಕಾಟಗಳು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿವೆ. ಲುಕ್ಅಪ್ ಕಾರ್ಯಾಚರಣೆಯು ಮರದಲ್ಲಿ ಕೀಲಿಯಿದೆಯೇ ಎಂಬುದನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಇದು ಮರದ ಕೆಳಗೆ ನಡೆಯುತ್ತದೆ ಮತ್ತು ಪ್ರತಿ ನೋಡ್ನಲ್ಲಿ ಕ್ಯಾಂಡಿಡೇಟ್ ಸಬ್ನೋಡ್ ಇದೆಯೇ ಅಥವಾ ಕೀಲಿಯೊಂದಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ಬಳಕೆದಾರರ ಮೌಲ್ಯವಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಫಂಕ್ಷನ್ ಲುಕ್ಅಪ್ (ಕೀ) ಎಂದರೆ ಎಂಟ್ರಿ-ಗೆಟ್ _ ರೂಟ್ _ ಎಂಟ್ರಿ ()// ಮರವು ಖಾಲಿಯಾಗಿಲ್ಲದಿದ್ದರೆ ಮೂಲ ನಮೂದು ನಮೂದಿಸುವಾಗ ಮೂಲ ನೋಡ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ! = ಎನ್ಐಎಲ್ & & & entry.is_subnode () ಡೋ ನೋಡ್-entry.get_node () ಎಂಟ್ರಿ-node.get_entry (ಕೀ) ರಿಪೀಟ್ ರಿಟರ್ನ್ ಎಂಟ್ರಿ// ಎಂಟ್ರಿ-ಎನ್ಐಎಲ್ ಫಂಕ್ಷನ್ ಆಗಿರಬಹುದು-ಗೆಟ್ _ ಎಂಟ್ರಿ (ಕೀ) ಎಂದರೆ ನೋಡ್-ಪ್ರಸ್ತುತ ನೋಡ್-ಎಚ್-ಬಿಟ್ಸ್-ಅಟ್ _ ಡೆಪ್ತ್ (ಕೀ, node.get_depth ())-ಎಂಟ್ರಿ-node.get_entry_at (ಎಚ್) ರಿಟರ್ನ್ ಎಂಟ್ರಿ// ಎಂಟ್ರಿ-ನೀಲ್ ಇನ್ಸರ್ಟ್ ಆಗಿರಬಹುದು. ಕಾರ್ಯಾಚರಣೆಯು ಲುಕ್ಅಪ್ ಕಾರ್ಯದಂತೆ ಮರವನ್ನು ಹಾದುಹೋಗುತ್ತದೆ ಮತ್ತು ನಂತರ ಕೀಲಿಯನ್ನು ನೋಡ್ಗೆ ಸೇರಿಸುತ್ತದೆ. ಪರಿಗಣಿಸಬೇಕಾದ ಹಲವಾರು ಪ್ರಕರಣಗಳಿವೆಃ ಕ್ವಾಡ್ರಂಟ್ ಖಾಲಿಯಾಗಿದೆ ಮತ್ತು ನಾವು ಕ್ವಾಡ್ರಂಟ್ಗೆ ಹೊಸ ನಮೂದನ್ನು ಸೇರಿಸಬಹುದು ಮತ್ತು ಹಿಂತಿರುಗಬಹುದು. ಕ್ವಾಡ್ರಂಟ್ ಹೊಸ ನಮೂದನ್ನು ಹೋಲುವ ಕೀಲಿಯೊಂದಿಗೆ ಬಳಕೆದಾರರ ನಮೂದನ್ನು ಹೊಂದಿದೆ. ಅಂತಹ ಘರ್ಷಣೆಯನ್ನು ಎದುರಿಸಲು ಒಂದು ಮಾರ್ಗವೆಂದರೆ ವಿಫಲವಾದ ಅಳವಡಿಕೆಯನ್ನು ಸೂಚಿಸುವ ಧ್ವಜವನ್ನು ಹಿಂದಿರುಗಿಸುವುದು. ಮರವನ್ನು ನೋಡ್ನ ನಮೂದಿನಂತೆ ಸಂಗ್ರಹದೊಂದಿಗೆ ಬಹು-ನಕ್ಷೆಯಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಿದರೆ, ಹೊಸ ಮೌಲ್ಯವನ್ನು ಆ ಸಂಗ್ರಹಕ್ಕೆ ಸೇರಿಸಲಾಗುತ್ತದೆ. ಕ್ವಾಡ್ರಂಟ್ ಬೇರೆ ಕೀಲಿಯೊಂದಿಗೆ ಒಂದು ನಮೂದನ್ನು (ಬಳಕೆದಾರ ನಮೂದು ಅಥವಾ ಸಬ್ನೋಡ್ ನಮೂದು) ಹೊಂದಿರುತ್ತದೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಮೂದನ್ನು ಹಳೆಯ ಮತ್ತು ಹೊಸ ನಮೂದನ್ನು ಹೊಂದಿರುವ ಹೊಸ ಸಬ್ನೋಡ್ನೊಂದಿಗೆ ಬದಲಾಯಿಸುವ ಅಗತ್ಯವಿದೆ. ಫಂಕ್ಷನ್ ಇನ್ಸರ್ಟ್ (ನೋಡ್, ಕೀ, ವ್ಯಾಲ್ಯೂ) ಲೆವೆಲ್ node.get_level ()// ಲೆವೆಲ್ ರೂಟ್ಗೆ 0 ಆಗಿರುತ್ತದೆ h → ಎಕ್ಸ್ಟ್ರಾಕ್ಟ್ _ ಬಿಟ್ಸ್ _ ಅಟ್ _ ಲೆವೆಲ್ (ಕೀ, ಲೆವೆಲ್) ಎಂಟ್ರಿ node.get_entry (h) ಎಂಟ್ರಿ = = ಎನ್ಐಎಲ್ ಆಗಿದ್ದರೆ// ಕೇಸ್ 1. ಎಂಟ್ರಿ _ ನ್ಯೂ | ಕ್ರಿಯೇಟ್ _ ಎಂಟ್ರಿ (ಕೀ, ವ್ಯಾಲ್ಯೂ) node.set_entry (h, ಎಂಟ್ರಿ _ ನ್ಯೂ) ಇಲ್ಲದಿದ್ದರೆ! entry.is_subnode () & & entry.get_key () = = ಕೀ ಆಗ// ಕೇಸ್ 2. ಘರ್ಷಣೆ, ಈಗಾಗಲೇ ಒಂದು ನಮೂದು ರಿಟರ್ನ್ ಇದೆ, ಈಗ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ನಮೂದು ಮತ್ತು ಹೊಸ ನಮೂದಿನೊಂದಿಗೆ ಹೊಸ ಸಬ್ನೋಡ್, ಸಬ್ನೋಡ್, ಮೌಲ್ಯ, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್, ಹೊಸ ಸಬ್ನೋಡ್. ಉಳಿದ ನಮೂದನ್ನು ಮೂಲ ನೋಡ್ಗೆ ಸ್ಥಳಾಂತರಿಸಲಾಗುತ್ತದೆ. ವಿಂಡೋಸ್ ಪ್ರಶ್ನೆಗಳು ಆಯತಾಕಾರದ ಅಕ್ಷ-ಜೋಡಿಸಲಾದ ಹೈಪರ್ಬಾಕ್ಸ್ನಲ್ಲಿರುವ ಎಲ್ಲಾ ಕೀಲಿಗಳನ್ನು ಹಿಂದಿರುಗಿಸುವ ಪ್ರಶ್ನೆಗಳಾಗಿವೆ. ಅವುಗಳನ್ನು ಎರಡು ಆಯಾಮದ ಬಿಂದುಗಳೆಂದು ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು ಮತ್ತು ಅವು ಪ್ರಶ್ನಾವಳಿ ಪೆಟ್ಟಿಗೆಯ "ಕೆಳಗಿನ ಎಡ" ಮತ್ತು "ಮೇಲಿನ ಬಲ" ಮೂಲೆಗಳನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ಒಂದು ಕ್ಷುಲ್ಲಕ ಅನುಷ್ಠಾನವು ನೋಡ್ನಲ್ಲಿನ ಎಲ್ಲಾ ನಮೂದುಗಳನ್ನು ಹಾದುಹೋಗುತ್ತದೆ (ರೂಟ್ ನೋಡ್ನಿಂದ ಪ್ರಾರಂಭಿಸಿ) ಮತ್ತು ಒಂದು ನಮೂದು ಹೊಂದಿಕೆಯಾದರೆ ಅದನ್ನು ಫಲಿತಾಂಶದ ಪಟ್ಟಿಗೆ ಸೇರಿಸುತ್ತದೆ (ಅದು ಬಳಕೆದಾರರ ನಮೂದು ಆಗಿದ್ದರೆ) ಅಥವಾ ಅದನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ಹಾದುಹೋಗುತ್ತದೆ (ಅದು ಸಬ್ನೋಡ್ ಆಗಿದ್ದರೆ). ಫಂಕ್ಷನ್ ಕ್ವೆರಿ (ನೋಡ್, ಮಿನಿ, ಮ್ಯಾಕ್ಸ್, ರಿಜಲ್ಟ್ _ ಲಿಸ್ಟ್) ಎಂದರೆ ಫೋರ್ಚ್ ಎಂಟ್ರಿ node.get_entries () entry.is_subnode () ಆಗಿದ್ದರೆ, entry.get_prefix ()> = ಮಿನಿ ಮತ್ತು entry.get_prefix () <= ಮ್ಯಾಕ್ಸ್ ಆಗಿದ್ದರೆ, ಕ್ವೆರಿ (entry.get_subnode (), ಮಿನಿ, ಮ್ಯಾಕ್ಸ್, ರಿಜಲ್ಟ್ _ ಲಿಸ್ಟ್) ಕೊನೆಗೊಳ್ಳುತ್ತದೆ, ಇಲ್ಲದಿದ್ದರೆ entry.get_key ()> = ಮಿನಿ ಮತ್ತು entry.get_key () <= ಮ್ಯಾಕ್ಸ್ ಆಗಿದ್ದರೆ, result_list.add (ಎಂಟ್ರಿ) ಕೊನೆಗೊಳ್ಳುತ್ತದೆ. ನೋಡ್ನಲ್ಲಿನ ಎಲ್ಲಾ ನಮೂದುಗಳನ್ನು ಹಾದುಹೋಗುವುದು ಮತ್ತು ಹೋಲಿಸುವುದು ಸಮಯದ ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೊಂದಿದೆ ಏಕೆಂದರೆ-ಆಯಾಮದ ಕೀಲಿಯ ಪ್ರತಿ ಹೋಲಿಕೆಯು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುತ್ತದೆ. ನೋಡ್ಗಳು ನಮೂದುಗಳನ್ನು ಹೊಂದಿರುವುದರಿಂದ, ಇದು ಹೆಚ್ಚುತ್ತಿರುವ ಆಯಾಮದೊಂದಿಗೆ ಉತ್ತಮವಾಗಿ ಅಳೆಯುವುದಿಲ್ಲ. ಹೈಪರ್ಕ್ಯೂಬ್ ವಿಳಾಸವನ್ನು ಬಳಸುವ ಮೂಲಕ ಈ ವಿಧಾನವನ್ನು ಹೇಗೆ ಸುಧಾರಿಸಬಹುದು ಎಂಬುದಕ್ಕೆ ವಿವಿಧ ಮಾರ್ಗಗಳಿವೆ. ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಕ್ವೈರೆಂಟ್ನ ವಿಳಾಸಗಳಿಗೆ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೌಲ್ಯಗಳನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ಇದರ ಉದ್ದೇಶವಾಗಿದ್ದು, ಹುಡುಕಾಟವು ಕ್ವೈರೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸದ ಕೆಲವು ಕ್ವೈರೆಂಟ್ಗಳನ್ನು ತಪ್ಪಿಸಬಹುದು. ಒಂದು ನೋಡ್ನ ಕೇಂದ್ರವಾಗಿರಲಿ (ಇದು ನೋಡ್ನ ಪೂರ್ವಪ್ರತ್ಯಯಕ್ಕೆ ಸಮನಾಗಿರುತ್ತದೆ) ಮತ್ತು ಪ್ರತಿ ಬಿಟ್ಗಳೊಂದಿಗೆ ಎರಡು ಬಿಟ್ ಸ್ಟ್ರಿಂಗ್ಗಳಾಗಿರಲಿ. ಅಲ್ಲದೆ, ಸಬ್ಸ್ಕ್ರಿಪ್ಟ್ 's ಬಿಟ್ ಆಫ್ ಮತ್ತು ಮತ್ತು' th ಆಯಾಮವನ್ನು ಸೂಚಿಸಲು ಅವಕಾಶ ಮಾಡಿಕೊಡಿ. ಮತ್ತು ಆಗಲಿ. ನಂತರ ನೋಡ್ನ "ಕೆಳಗಿನ" ಅರ್ಧ ಮತ್ತು ಅದರಲ್ಲಿರುವ ಎಲ್ಲಾ ಚತುರ್ಭುಜಗಳು ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸದ ಪ್ರತಿಯೊಂದು ಆಯಾಮಕ್ಕೂ "" ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ. ಅಂತೆಯೇ, "ಮೇಲಿನ" ಅರ್ಧವು ಪ್ರಶ್ನಾವಳಿ ಪೆಟ್ಟಿಗೆಯೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸದ ಪ್ರತಿಯೊಂದು ಆಯಾಮಕ್ಕೂ "a" ಅನ್ನು ಹೊಂದಿದೆ. ತದನಂತರ ಹಾದುಹೋಗಬೇಕಾದ ನೋಡ್ನಲ್ಲಿ ಕಡಿಮೆ ಮತ್ತು ಗರಿಷ್ಠವನ್ನು ಪ್ರಸ್ತುತಪಡಿಸಿ. ಕ್ವಾಡ್ರಂಟ್ಗಳು ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಛೇದಿಸುತ್ತವೆ ಅಥವಾ ಛೇದಿಸುವುದಿಲ್ಲ. ಇದಕ್ಕೆ ಪುರಾವೆ ಲಭ್ಯವಿದೆ. ಇದರೊಂದಿಗೆ, ಮೇಲಿನ ಕ್ವೆರಿ ಫಂಕ್ಷನ್ ಅನ್ನು ಈ ರೀತಿ ಸುಧಾರಿಸಬಹುದುಃ ಫಂಕ್ಷನ್ ಕ್ವೆರಿ (ನೋಡ್, ಮಿನಿ, ಮ್ಯಾಕ್ಸ್, ರಿಜಲ್ಟ್ ಲಿಸ್ಟ್) ಎಂದರೆ ಎಚ್ _ ಮಿನ್, ಎಚ್ _ ಮಿನ್, ಎಚ್ _ ಮ್ಯಾಕ್ಸ್ ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ, ಪ್ರತಿ ನಮೂದಿಗೆ ಎಚ್ _ ಮ್ಯಾಕ್ಸ್ ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ, node.get_entries_range (ಎಚ್ _ ಮಿನ್, ಎಚ್ _ ಮ್ಯಾಕ್ಸ್), ಡು [.] ರಿಪೀಟ್ ರಿಟರ್ನ್ ಕ್ಯಾಲ್ಕುಲೇಟಿಂಗ್ ಮತ್ತು ಆಗಿದೆ. ನೋಡ್ನಲ್ಲಿ ಆಕ್ರಮಿತ ಕ್ವಾಡ್ರಂಟ್ಗಳ ವಿತರಣೆಯನ್ನು ಅವಲಂಬಿಸಿ ಈ ವಿಧಾನವು ಇಲ್ಲದಿಂದ ಬಹುತೇಕ ಎಲ್ಲಾ ಪ್ರಮುಖ ಹೋಲಿಕೆಗಳನ್ನು ತಪ್ಪಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಇದು ಸರಾಸರಿ ಪ್ರಯಾಣದ ಸಮಯವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ ಆದರೆ ಪರಿಣಾಮವಾಗಿ ಉಂಟಾಗುವ ಸಂಕೀರ್ಣತೆ ಇನ್ನೂ ಇದೆ. ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಓವರ್ಲ್ಯಾಪ್ ಮಾಡಲು ಕ್ವಾಡ್ರಂಟ್ಗಳನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಓವರ್ಲ್ಯಾಪ್ ಮಾಡದ ಕ್ವಾಡ್ರಂಟ್ಗಳು ಇನ್ನೂ ಇರಬಹುದು. ಕಲ್ಪನೆಃ ಮತ್ತು ಪ್ರತಿಯೊಂದೂ ಪ್ರತಿ ಆಯಾಮಕ್ಕೂ ಒಂದು ಬಿಟ್ ಅನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಅದು ಪ್ರಶ್ನಾವಳಿ ಪೆಟ್ಟಿಗೆಯು ಆ ಆಯಾಮದಲ್ಲಿರುವ ನೋಡ್ನ ಕೆಳಗಿನ/ಮೇಲಿನ ಅರ್ಧದೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತದೆಯೇ ಎಂದು ಸೂಚಿಸುತ್ತದೆ. - ಆಯಾಮದ ಕೀಲಿಗಳನ್ನು ಹೋಲಿಕೆ ಮಾಡದೆಯೇ ಕ್ವಾಂಡ್ರಂಟ್ ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತದೆಯೇ ಎಂದು ತ್ವರಿತವಾಗಿ ಪರಿಶೀಲಿಸಲು ಇದನ್ನು ಬಳಸಬಹುದುಃ ಪ್ರತಿ ಬಿಟ್ಗೆ ಅನುಗುಣವಾದ ಬಿಟ್ ಇನ್ ಆಗಿದ್ದರೆ ಮತ್ತು ಪ್ರತಿ ಬಿಟ್ಗೆ ಅನುಗುಣವಾದ ಬಿಟ್ ಇನ್ ಆಗಿದ್ದರೆ ಕ್ವಾಂಡ್ರಂಟ್ ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತದೆ. 64-ಬಿಟ್ ರೆಜಿಸ್ಟರ್ಗಳನ್ನು ಹೊಂದಿರುವ ಸಿ. ಪಿ. ಯು. ನಲ್ಲಿ ಆದ್ದರಿಂದ-ಆಯಾಮದ ಕೀಲಿಗಳ ಓವರ್ಲ್ಯಾಪ್ ಅನ್ನು ಪರಿಶೀಲಿಸಲು ಸಾಧ್ಯವಿದೆ. ಕಾರ್ಯವು _ ಓವರ್ಲ್ಯಾಪ್ ಆಗಿದೆ (h, h _ ನಿಮಿಷ, h _ ಗರಿಷ್ಠ) ರಿಟರ್ನ್ ಆಗಿದೆ (h | h _ ನಿಮಿಷ) ಮತ್ತು ಕ್ವಾಡ್ರಂಟ್ ಮತ್ತು ಕ್ವೆರಿ ಓವರ್ಲ್ಯಾಪ್ ಆಗಿದ್ದರೆ h _ ಗರಿಷ್ಠ = = h// ಅನ್ನು 'ನಿಜ' ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ. ಫಂಕ್ಷನ್ ಕ್ವೆರಿ (ನೋಡ್, ಮಿನಿ, ಮ್ಯಾಕ್ಸ್, ರಿಜಲ್ಟ್ _ ಲಿಸ್ಟ್) ಎಂದರೆ h _ ಮಿನ್-ಪ್ರತಿ ನಮೂದಿಗೆ h _ ಮ್ಯಾಕ್ಸ್ ಅನ್ನು ಲೆಕ್ಕಾಚಾರ ಮಾಡಿ-node.get_entries_range (h _ ಮಿನ್, h _ ಮ್ಯಾಕ್ಸ್)-entry.get_h (); (h | h _ ಮಿನ್) & h _ ಮ್ಯಾಕ್ಸ್ = = h ಆಗಿದ್ದರೆ// ಕ್ವಾಡ್ರಂಟ್ ಮತ್ತು ಕ್ವೆರಿ ಓವರ್ಲ್ಯಾಪ್ ಆಗಿದ್ದರೆ 'ಟ್ರೂ' ಎಂದು ಮೌಲ್ಯಮಾಪನ ಮಾಡುತ್ತದೆ. [.] ಪುನರಾವರ್ತಿತ ರಿಟರ್ನ್ ಆಗಿದ್ದರೆ ಕೊನೆಗೊಳ್ಳುತ್ತದೆ ಪರಿಣಾಮವಾಗಿ ಬರುವ ಸಮಯದ ಸಂಕೀರ್ಣತೆಯನ್ನು ಪೂರ್ಣ ಪುನರಾವರ್ತನೆಗೆ ಹೋಲಿಸಲಾಗುತ್ತದೆ. ಟ್ರ್ಯಾವರ್ಸ್ ಕ್ವಾಡ್ರಂಟ್ಗಳು ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುತ್ತವೆ ದೊಡ್ಡ ನೋಡ್ಗಳೊಂದಿಗಿನ ಹೆಚ್ಚಿನ ಆಯಾಮಗಳಿಗೆ ಎಲ್ಲದರ ಮೂಲಕ ಪುನರಾವರ್ತನೆಯಾಗುವುದನ್ನು ತಪ್ಪಿಸಲು ಸಾಧ್ಯವಿದೆ ಮತ್ತು ಬದಲಿಗೆ ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುವ ಮುಂದಿನ ಹೆಚ್ಚಿನದನ್ನು ನೇರವಾಗಿ ಲೆಕ್ಕ ಹಾಕಬಹುದು. ಮೊದಲ ಹಂತವು ಪ್ರಶ್ನಾವಳಿ ಪೆಟ್ಟಿಗೆಯೊಂದಿಗೆ ಯಾವುದೇ ಅತಿಕ್ರಮಣವನ್ನು ಹೊಂದಿರದ ಎಲ್ಲಾ ಚತುರ್ಭುಜಗಳಿಗೆ-ಬಿಟ್ಗಳನ್ನು ನೀಡಲಾಗುತ್ತದೆ. ಎರಡನೇ ಹಂತವು ಅಳವಡಿಸಿದ ಮತ್ತು ಸೇರಿಸಿದ ಬಿಟ್ಗಳನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ, ಇದರಿಂದಾಗಿ ಓವರ್ಲಾಪಿಂಗ್ ಅಲ್ಲದ ಕ್ವಾಡ್ರಂಟ್ಗಳನ್ನು ಬಿಟ್ಟುಬಿಡಲಾಗುತ್ತದೆ. ಕೊನೆಯ ಹಂತವು ಉಕ್ಕಿ ಹರಿಯುವಿಕೆಯನ್ನು ಪ್ರಚೋದಿಸಲು ಬಳಸುವ ಎಲ್ಲಾ ಅನಪೇಕ್ಷಿತ ಬಿಟ್ಗಳನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ. ತರ್ಕವನ್ನು ವಿವರವಾಗಿ ವಿವರಿಸಲಾಗಿದೆ. ಲೆಕ್ಕಾಚಾರವು ಈ ಕೆಳಗಿನಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆಃ ಫಂಕ್ಷನ್ ಇಂಕ್ರಿಮೆಂಟ್ _ ಎಚ್ (ಎಚ್ _ ಇನ್ಪುಟ್, ಎಚ್ _ ಮಿನ್, ಎಚ್ _ ಮ್ಯಾಕ್ಸ್) ಎಂದರೆ ಎಚ್ _ ಔಟ್ = ಎಚ್ _ ಇನ್ಪುಟ್ | (~ ಎಚ್ _ ಮ್ಯಾಕ್ಸ್)// ಪೂರ್ವ-ಮಾಸ್ಕ್ ಎಚ್ _ ಔಟ್ + = 1// ಇಂಕ್ರಿಮೆಂಟ್ ಎಚ್ _ ಔಟ್ = (ಎಚ್ _ ಔಟ್ & ಎಚ್ _ ಮ್ಯಾಕ್ಸ್) | ಎಚ್ _ ಮಿನ್// ಪೋಸ್ಟ್-ಮಾಸ್ಕ್ ರಿಟರ್ನ್ ಎಚ್ _ ಔಟ್. ನೋಡ್ ಅನ್ನು ಹಾದುಹೋಗಲು ಉಂಟಾಗುವ ಸಮಯದ ಸಂಕೀರ್ಣತೆಯು. ಪ್ರಶ್ನಾವಳಿ ಪೆಟ್ಟಿಗೆಯೊಂದಿಗೆ ಅತಿಕ್ರಮಿಸುವ ಹೆಚ್ಚಿನ ಚತುರ್ಭುಜಗಳು ಒಂದು ನಮೂದನ್ನು ಹೊಂದಿದ್ದರೆ ಇದು ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. - ಹತ್ತಿರದ ನೆರೆಹೊರೆಯವರ ಹತ್ತಿರದ ನೆರೆಯವರ ಹುಡುಕಾಟಗಳನ್ನು ಪ್ರಮಾಣಿತ ಕ್ರಮಾವಳಿಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಕೀಲಿಗಳು ಪಿ. ಎಚ್-ಮರವು ಕೇವಲ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯಗಳನ್ನು ಮಾತ್ರ ಸಂಗ್ರಹಿಸಬಹುದು. ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳನ್ನು ಕ್ಷುಲ್ಲಕವಾಗಿ ಪೂರ್ಣಾಂಕಗಳಾಗಿ ಸಂಗ್ರಹಿಸಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ಪೂರ್ಣಾಂಕವನ್ನಾಗಿ ಮಾಡಬಹುದು. ಆದಾಗ್ಯೂ, ಕೃತಿಯ ಲೇಖಕರು ನಿಖರತೆಯನ್ನು ಕಳೆದುಕೊಳ್ಳದೆ ಒಂದು ವಿಧಾನವನ್ನು ಪ್ರಸ್ತಾಪಿಸುತ್ತಾರೆ. ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯದ 32 ಅಥವಾ 64 ಬಿಟ್ಗಳನ್ನು ಪೂರ್ಣಾಂಕವಾಗಿ (32 ಅಥವಾ 64 ಬಿಟ್ಗಳೊಂದಿಗೆ) ಸರಳವಾಗಿ ಅರ್ಥೈಸಿಕೊಳ್ಳುವ ಮೂಲಕ ನಿಖರತೆಯನ್ನು ಸಾಧಿಸಬಹುದಾದರೆ, ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯವನ್ನು ನಷ್ಟವಿಲ್ಲದೆ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯವಾಗಿ (ಮತ್ತು ಹಿಂದಕ್ಕೆ) ಪರಿವರ್ತಿಸುವ ನಷ್ಟವಿಲ್ಲದ ಪರಿವರ್ತನೆ. ಐ. ಇ. ಇ. ಇ 754 ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳನ್ನು ಎನ್ಕೋಡ್ ಮಾಡುವ ವಿಧಾನದಿಂದಾಗಿ, ಪರಿಣಾಮವಾಗಿ ಬರುವ ಪೂರ್ಣಾಂಕ ಮೌಲ್ಯಗಳು ಕನಿಷ್ಠ ಧನಾತ್ಮಕ ಮೌಲ್ಯಗಳಿಗೆ ಮೂಲ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳಂತೆಯೇ ಕ್ರಮವನ್ನು ಹೊಂದಿರುತ್ತವೆ. ಸೈನ್ ಅಲ್ಲದ ಬಿಟ್ಗಳನ್ನು ತಲೆಕೆಳಗಿಸುವ ಮೂಲಕ ಋಣಾತ್ಮಕ ಮೌಲ್ಯಗಳಿಗೆ ಆದೇಶವನ್ನು ಸಾಧಿಸಬಹುದು. ಜಾವಾದಲ್ಲಿ ಉದಾಹರಣೆ ಅನುಷ್ಠಾನಗಳುಃ ದೀರ್ಘ ಎನ್ಕೋಡ್ (ಡಬಲ್ ಮೌಲ್ಯ) {ಉದ್ದ r = Double.doubleToRawLongBits (ಮೌಲ್ಯ); ರಿಟರ್ನ್ (r> = 0)? ಆರ್ಃ ಆರ್ ^ 0x7ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಲ್;} ಸಿ + +: ಎಸ್ಟಿಡಿಃ: ಇಂಟ64 _ ಟಿ ಎನ್ಕೋಡ್ (ಡಬಲ್ ವ್ಯಾಲ್ಯೂ) {ಎಸ್ಟಿಡಿಃ: ಇಂಟ64 _ ಟಿ ಆರ್; ಮೆಮ್ಸಿಪಿ (& ಆರ್, & ವ್ಯಾಲ್ಯೂ, ಸೈಝೋಫ್ (ಆರ್)); ರಿಟರ್ನ್ ಆರ್> = 0? r: r ^ 0x7 ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಫ್. ಎಲ್;} ಎನ್ಕೋಡಿಂಗ್ (ಮತ್ತು ವಿಲೋಮ ಡಿಕೋಡಿಂಗ್) ಎಲ್ಲಾ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳಿಗೆ ನಷ್ಟರಹಿತವಾಗಿದೆ. ಆದೇಶವು ಮತ್ತು ಸೇರಿದಂತೆ ಆಚರಣೆಯಲ್ಲಿ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಪೂರ್ಣಾಂಕದ ಪ್ರಾತಿನಿಧ್ಯವು ಸಾಮಾನ್ಯ ಹೋಲಿಸಬಹುದಾದ ಮೌಲ್ಯವಾಗಿ ಬದಲಾಗುತ್ತದೆ (ಅನಂತಕ್ಕಿಂತ ಚಿಕ್ಕದಾಗಿದೆ), ಅನಂತತೆಗಳು ಪರಸ್ಪರ ಹೋಲಿಸಲ್ಪಡುತ್ತವೆ ಮತ್ತು ಅದಕ್ಕಿಂತ ದೊಡ್ಡದಾಗಿರುತ್ತವೆ. ಇದರರ್ಥ, ಉದಾಹರಣೆಗೆ, ಪ್ರಶ್ನೆಯ ವ್ಯಾಪ್ತಿಯು ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಕೆಯಾಗುವುದಿಲ್ಲ. ಪ್ರಶ್ನೆಯ ವ್ಯಾಪ್ತಿಯನ್ನು ಹೊಂದಿಸಲು ಹೊಂದಿಕೆಯಾಗಬೇಕು. ಹೈಪರ್ಬಾಕ್ಸ್ ಕೀಲಿಗಳು ಸಂಪುಟಗಳನ್ನು (ಅಕ್ಷ-ಜೋಡಿಸಲಾದ ಹೈಪರ್-ಬಾಕ್ಸ್ಗಳು) ಕೀಲಿಗಳಾಗಿ ಸಂಗ್ರಹಿಸಲು, ಅನುಷ್ಠಾನಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಮೂಲೆಯ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಬಳಸುತ್ತವೆ, ಇದು ಪೆಟ್ಟಿಗೆಯ ಎರಡು ಆಯಾಮದ ಕನಿಷ್ಠ ಮತ್ತು ಗರಿಷ್ಠ ಮೂಲೆಗಳನ್ನು ಆಯಾಮಗಳೊಂದಿಗೆ ಒಂದೇ ಕೀಲಿಗಳಾಗಿ ಪರಿವರ್ತಿಸುತ್ತದೆ, ಉದಾಹರಣೆಗೆ ಅವುಗಳನ್ನು ಪರಸ್ಪರ ಬಿಡಿಸುವ ಮೂಲಕಃ ಇದು ಹುಡುಕಾಟ, ಒಳಸೇರಿಸುವಿಕೆ ಮತ್ತು ತೆಗೆದುಹಾಕುವಿಕೆ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿ ಕ್ಷುಲ್ಲಕವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ. ಕಿಟಕಿ ಪ್ರಶ್ನೆಗಳನ್ನು-ಆಯಾಮದ ವಾಹಕಗಳಿಂದ-ಆಯಾಮದ ವಾಹಕಗಳಿಗೆ ಪರಿವರ್ತಿಸಬೇಕಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಳಗೆ ಸಂಪೂರ್ಣವಾಗಿ ಇರುವ ಎಲ್ಲಾ ಪೆಟ್ಟಿಗೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ವಿಂಡೋ ಕ್ವೆರಿಗೆ, ಕ್ವೆರಿ ಕೀಗಳು ಹೀಗಿವೆಃ ಕ್ವೆರಿ ಬಾಕ್ಸ್ನೊಂದಿಗೆ ಛೇದಿಸುವ ಎಲ್ಲಾ ಪೆಟ್ಟಿಗೆಗಳಿಗೆ ಹೊಂದಿಕೆಯಾಗುವ ವಿಂಡೋ ಕ್ವೆರಿ ಕಾರ್ಯಾಚರಣೆಗೆ, ಕ್ವೆರಿ ಕೀಗಳು ಹೀಗಿವೆಃ ಸ್ಕೇಲೆಬಿಲಿಟಿ ಹೆಚ್ಚಿನ ಆಯಾಮಗಳಲ್ಲಿ ನಮೂದುಗಳಿಗಿಂತ ಕಡಿಮೆ, ಪಿಹೆಚ್-ಟ್ರೀ ಒಂದೇ ನೋಡ್ ಅನ್ನು ಹೊಂದಿರಬಹುದು, ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಝಡ್-ಆರ್ಡರ್ ವಕ್ರರೇಖೆಯೊಂದಿಗೆ ಬಿ-ಟ್ರೀ ಆಗಿ "ಕ್ಷೀಣಿಸುತ್ತದೆ". ಆಡ್/ರಿಮೂವ್/ಲುಕ್ಅಪ್ ಕಾರ್ಯಾಚರಣೆಗಳು ಉಳಿದಿವೆ ಮತ್ತು ವಿಂಡೋ ಪ್ರಶ್ನೆಗಳು ಕ್ವಾಡ್ರಂಟ್ ಫಿಲ್ಟರ್ಗಳನ್ನು ಬಳಸಬಹುದು. ಆದಾಗ್ಯೂ, ಇದು ಆಯಾಮದ ಶಾಪವನ್ನು ತಪ್ಪಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ, ಏಕೆಂದರೆ ಹೆಚ್ಚಿನ ಆಯಾಮದ ದತ್ತಾಂಶ ಅಥವಾ ಪಿ. ಎಚ್-ಟ್ರೀ ಪೂರ್ಣ ಸ್ಕ್ಯಾನ್ಗಿಂತ ಸ್ವಲ್ಪಮಟ್ಟಿಗೆ ಉತ್ತಮವಾಗಿದೆ. ಉಪಯೋಗಗಳ ಸಂಶೋಧನೆಯು ದೊಡ್ಡ ಮತ್ತು ವೇಗವಾಗಿ ಬದಲಾಗುತ್ತಿರುವ ದತ್ತಾಂಶಗಳ ಜೊತೆ ವೇಗವಾಗಿ ಸೇರಿಸುವ/ತೆಗೆದುಹಾಕುವ/ನಿಖರವಾದ-ಹೊಂದಾಣಿಕೆಯ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ವರದಿ ಮಾಡಿದೆ. ಕಿಟಕಿ ಪ್ರಶ್ನೆಗಳು ವಿಶೇಷವಾಗಿ ಸಣ್ಣ ಕಿಟಕಿಗಳು ಅಥವಾ ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳಿಗೆ ಉತ್ತಮವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ತೋರಿಸಲಾಗಿದೆ. ಪಿ. ಎಚ್-ಮರವು ಮುಖ್ಯವಾಗಿ ಮೆಮೊರಿಯಲ್ಲಿನ ಬಳಕೆಗೆ ಸೂಕ್ತವಾಗಿದೆ. ನೋಡ್ಗಳ ಗಾತ್ರವನ್ನು (ನಮೂದುಗಳ ಸಂಖ್ಯೆ) ನಿಗದಿಪಡಿಸಲಾಗಿದ್ದು, ಡಿಸ್ಕ್ನಲ್ಲಿನ ಪುಟದ ಗಾತ್ರದೊಂದಿಗೆ ನೋಡ್ ಗಾತ್ರವನ್ನು ಜೋಡಿಸಲು ಕಾನ್ಫಿಗರ್ ಮಾಡಬಹುದಾದ ನೋಡ್ ಗಾತ್ರವನ್ನು ಹೊಂದಿರುವ ಸೂಚ್ಯಂಕಗಳಿಂದ ನಿರಂತರ ಶೇಖರಣೆಯು ಪ್ರಯೋಜನ ಪಡೆಯುತ್ತದೆ. ಆರ್-ಟ್ರೀಗಳಂತಹ ಇತರ ಪ್ರಾದೇಶಿಕ ಸೂಚ್ಯಂಕಗಳೊಂದಿಗೆ ಇದು ಸುಲಭವಾಗಿದೆ. ಅನುಷ್ಠಾನಗಳು ಜಾವಾಃ ಮೂಲ ಆವಿಷ್ಕಾರಕ ಸಿ + + ರ ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿಃ ಮೂಲ ಆವಿಷ್ಕಾರಕ ಸಿ + + ರ ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿಃ ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿ ಸಿ + +: ಗಿಟ್ಹಬ್ ರೆಪೊಸಿಟರಿ ಬೈನರಿ ಸ್ಪೇಸ್ ಪಾರ್ಟಿಷನಿಂಗ್ ಬೈನರಿ ಟೈಲಿಂಗ್ ಕೆ-ಡಿ ಟ್ರೀ ಆಕ್ಟ್ರೀ ಕ್ವಾಡ್ಟ್ರೀ ಆರ್-ಟ್ರೀ ಯುಬಿ-ಟ್ರೀ ಸ್ಪೇಷಿಯಲ್ ಡೇಟಾಬೇಸ್ ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ವಿವರವಾದ ವಿವರಣೆ, ಉದಾಹರಣೆಗಳು ಮತ್ತು ಕಾರ್ಯಕ್ಷಮತೆಯ ಹೋಲಿಕೆಯೊಂದಿಗೆ ಪಿಹೆಚ್-ಟ್ರೀ ವೆಬ್ಸೈಟ್ ಉಲ್ಲೇಖಗಳು ಮರಗಳು (ದತ್ತಾಂಶ ರಚನೆಗಳು) ಡೇಟಾಬೇಸ್ ಸೂಚ್ಯಂಕ ತಂತ್ರಗಳು ಜ್ಯಾಮಿತೀಯ ದತ್ತಾಂಶ ರಚನೆಗಳು