Look-ahead (backtracking)
ಬ್ಯಾಕ್ಟ್ರಾಕಿಂಗ್ ಕ್ರಮಾವಳಿಗಳಲ್ಲಿ, ಲುಕ್ ಫಾರ್ವರ್ಡ್ ಎಂಬುದು ಉಪಪ್ರಕ್ರಿಯೆಯ ಸಾಮಾನ್ಯ ಪದವಾಗಿದ್ದು, ಅದರ ಮೌಲ್ಯಗಳಲ್ಲಿ ಒಂದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಕವಲೊಡೆಯುವ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಪರಿಣಾಮಗಳನ್ನು ಮುನ್ಸೂಚಿಸಲು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಮುಂದಿನದನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ವೇರಿಯೇಬಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಮತ್ತು ಅದಕ್ಕೆ ನಿಯೋಜಿಸಲು ಮೌಲ್ಯಗಳ ಕ್ರಮವನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದು ಲುಕ್-ಫಾರ್ಡ್ನ ಎರಡು ಪ್ರಮುಖ ಗುರಿಗಳಾಗಿವೆ. ನಿರ್ಬಂಧದ ತೃಪ್ತಿಯು ಸಾಮಾನ್ಯ ನಿರ್ಬಂಧದ ತೃಪ್ತಿಯ ಸಮಸ್ಯೆಯಲ್ಲಿ, ಪ್ರತಿ ಚಲಪರಿಮಾಣವು ಡೊಮೇನ್ನಲ್ಲಿ ಒಂದು ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು. ಆದ್ದರಿಂದ ಬ್ಯಾಕ್ಟ್ರಾಕಿಂಗ್ ಅಲ್ಗಾರಿದಮ್ ಪುನರಾವರ್ತಿತವಾಗಿ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅದರ ಪ್ರತಿಯೊಂದು ಸಂಭವನೀಯ ಮೌಲ್ಯಗಳನ್ನು ಪರೀಕ್ಷಿಸುತ್ತದೆ; ಪ್ರತಿ ಮೌಲ್ಯಕ್ಕೂ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಪುನರಾವರ್ತಿತವಾಗಿ ನಡೆಸಲಾಗುತ್ತದೆ. ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ನಿರ್ದಿಷ್ಟ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವ ಪರಿಣಾಮಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಅಥವಾ ಅದಕ್ಕೆ ನೀಡಬೇಕಾದ ಮೌಲ್ಯಗಳ ಕ್ರಮವನ್ನು ನಿರ್ಧರಿಸಲು ಲುಕ್ ಫಾರ್ವರ್ಡ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಮುಂದಕ್ಕೆ ನೋಡುವ ತಂತ್ರಗಳು ವೇರಿಯೇಬಲ್ಗೆ ನಿರ್ದಿಷ್ಟ ನಿಯೋಜನೆಯ ಪರಿಣಾಮವನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವ ಸರಳ ತಂತ್ರವನ್ನು ಫಾರ್ವರ್ಡ್ ಚೆಕಿಂಗ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಪ್ರಸ್ತುತ ಭಾಗಶಃ ಪರಿಹಾರ ಮತ್ತು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಅಭ್ಯರ್ಥಿಯ ನಿಯೋಜನೆಯನ್ನು ನೀಡಿದರೆ, ಇದು ಮತ್ತೊಂದು ವೇರಿಯೇಬಲ್ ಸ್ಥಿರವಾದ ಮೌಲ್ಯವನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಇದು ಮೊದಲು ಪರಿಗಣಿಸಲಾದ ವೇರಿಯೇಬಲ್ಗೆ ತಾತ್ಕಾಲಿಕ ಮೌಲ್ಯದೊಂದಿಗೆ ಪ್ರಸ್ತುತ ಭಾಗಶಃ ಪರಿಹಾರವನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ; ನಂತರ ಇದು ಇನ್ನೂ ನಿಯೋಜಿಸದ ಪ್ರತಿಯೊಂದು ಇತರ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ ಮತ್ತು ಅದರ ಮೌಲ್ಯಮಾಪನವು ವಿಸ್ತೃತ ಭಾಗಶಃ ಪರಿಹಾರಕ್ಕೆ ಅನುಗುಣವಾಗಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಹೆಚ್ಚು ಸಾಮಾನ್ಯವಾಗಿ, ಫಾರ್ವರ್ಡ್ ಚೆಕಿಂಗ್ ವಿಸ್ತೃತ ನಿಯೋಜನೆಗೆ ಅನುಗುಣವಾದ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ. ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವ ಆದರೆ ಉತ್ತಮ ಫಲಿತಾಂಶಗಳನ್ನು ನೀಡಬಹುದಾದ ಮುಂದಕ್ಕೆ ನೋಡುವ ತಂತ್ರವು ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಆಧರಿಸಿದೆ. ಅಂದರೆ, ಹೊಸ ಚಲಪರಿಮಾಣದ ಮೌಲ್ಯದೊಂದಿಗೆ ವಿಸ್ತರಿಸಲಾದ ಭಾಗಶಃ ಪರಿಹಾರವನ್ನು ನೀಡಿದರೆ, ಇದು ನಿಯೋಜಿಸದ ಎಲ್ಲಾ ಚಲಪರಿಮಾಣಗಳಿಗೆ ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಯಾವುದೇ ನಿಯೋಜಿಸದ ಚಲಪರಿಮಾಣಗಳಿಗೆ, ಸ್ಥಿರವಾಗಿ ಮತ್ತೊಂದು ಚಲಪರಿಮಾಣಕ್ಕೆ ವಿಸ್ತರಿಸಲಾಗದ ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕಲಾಗುತ್ತದೆ. ಫಾರ್ವರ್ಡ್ ಚೆಕಿಂಗ್ ಮತ್ತು ಆರ್ಕ್ ಸ್ಥಿರತೆಯ ನಡುವಿನ ವ್ಯತ್ಯಾಸವೆಂದರೆ ಮೊದಲನೆಯದು ಸ್ಥಿರತೆಗಾಗಿ ಒಂದೇ ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸುತ್ತದೆ, ಆದರೆ ಎರಡನೆಯದು ಪರಸ್ಪರ ಸ್ಥಿರತೆಗಾಗಿ ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ಗಳ ಜೋಡಿಗಳನ್ನು ಸಹ ಪರಿಶೀಲಿಸುತ್ತದೆ. ನಿರ್ಬಂಧದ ತೃಪ್ತಿ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಲುಕ್-ಫಾರ್ವರ್ಡ್ ಅನ್ನು ಬಳಸುವ ಅತ್ಯಂತ ಸಾಮಾನ್ಯ ವಿಧಾನವೆಂದರೆ ಆರ್ಕ್-ಕನ್ಸಿಸ್ಟೆನ್ಸಿ (MAC) ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ನಿರ್ವಹಿಸುವುದು. ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಒಳಗೊಂಡಿರುವ ಇತರ ಎರಡು ವಿಧಾನಗಳೆಂದರೆ ಪೂರ್ಣ ಮತ್ತು ಭಾಗಶಃ ಮುಂದಕ್ಕೆ ನೋಡುವುದು. ಅವು ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಜಾರಿಗೆ ತರುತ್ತವೆ, ಆದರೆ ಪ್ರತಿ ಜೋಡಿ ಅಸ್ಥಿರಗಳಿಗೆ ಅಲ್ಲ. ನಿರ್ದಿಷ್ಟವಾಗಿ ಹೇಳುವುದಾದರೆ, ಪೂರ್ಣ ನೋಟವು ನಿಯೋಜಿಸದ ಪ್ರತಿಯೊಂದು ಜೋಡಿ ಅಸ್ಥಿರಗಳನ್ನು ಪರಿಗಣಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳ ನಡುವೆ ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಇದು ಜಾಗತಿಕ ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಜಾರಿ ಮಾಡುವುದಕ್ಕಿಂತ ಭಿನ್ನವಾಗಿದೆ, ಇದಕ್ಕೆ ಬಹುಶಃ ಒಂದು ಜೋಡಿ ಅಸ್ಥಿರಗಳನ್ನು ಒಂದಕ್ಕಿಂತ ಹೆಚ್ಚು ಬಾರಿ ಮರುಪರಿಶೀಲಿಸಬೇಕಾಗಬಹುದು. ಬದಲಾಗಿ, ಒಮ್ಮೆ ಪೂರ್ಣ ನೋಟವು ಒಂದು ಜೋಡಿ ಅಸ್ಥಿರಗಳ ನಡುವೆ ಚಾಪದ ಸ್ಥಿರತೆಯನ್ನು ಜಾರಿಗೊಳಿಸಿದ ನಂತರ, ಜೋಡಿಯನ್ನು ಇನ್ನು ಮುಂದೆ ಪರಿಗಣಿಸಲಾಗುವುದಿಲ್ಲ. ಮುಂದಿರುವ ಭಾಗಶಃ ನೋಟವು ಹೋಲುತ್ತದೆ, ಆದರೆ ಅಸ್ಥಿರಗಳ ಒಂದು ನಿರ್ದಿಷ್ಟ ಕ್ರಮವನ್ನು ಪರಿಗಣಿಸಲಾಗುತ್ತದೆ, ಮತ್ತು ಆರ್ಕ್ ಸ್ಥಿರತೆಯನ್ನು ಪ್ರತಿ ಜೋಡಿಗೆ ಒಮ್ಮೆ ಮಾತ್ರ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. ಆರ್ಕ್ ಸ್ಥಿರತೆಯ ಆಧಾರದ ಮೇಲೆ ಮುಂದೆ ನೋಡಿ ಮಾರ್ಗ ಸ್ಥಿರತೆ ಮತ್ತು ಸಾಮಾನ್ಯ ಐ-ಸ್ಥಿರತೆ ಅಥವಾ ಸಂಬಂಧಿತ ಆರ್ಕ್ ಸ್ಥಿರತೆಯೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಹ ವಿಸ್ತರಿಸಬಹುದು. ಮುಂದೆ ನೋಡುವ ಫಲಿತಾಂಶಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಮುಂದಿನ ವೇರಿಯೇಬಲ್ ಮತ್ತು ಈ ವೇರಿಯೇಬಲ್ಗೆ ನೀಡುವ ಮೌಲ್ಯಗಳ ಕ್ರಮವನ್ನು ನಿರ್ಧರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಯಾವುದೇ ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ ಮತ್ತು ಮೌಲ್ಯಕ್ಕೆ, ಲುಕ್-ಫಾರ್ವರ್ಡ್ ಆ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಆ ಮೌಲ್ಯಕ್ಕೆ ಹೊಂದಿಸುವ ಪರಿಣಾಮಗಳನ್ನು ಅಂದಾಜು ಮಾಡುತ್ತದೆ. ಮುಂದಿನ ವೇರಿಯೇಬಲ್ನ ಆಯ್ಕೆ ಮತ್ತು ಅದನ್ನು ನೀಡಲು ಮುಂದಿನ ಮೌಲ್ಯದ ಆಯ್ಕೆಯು ಪೂರಕವಾಗಿದೆ, ಇದರಲ್ಲಿ ಮೌಲ್ಯವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಪರಿಹಾರವನ್ನು (ಯಾವುದಾದರೂ ಇದ್ದರೆ) ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಕಂಡುಕೊಳ್ಳುವ ರೀತಿಯಲ್ಲಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ, ಆದರೆ ಮುಂದಿನ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಅತೃಪ್ತಿಕರ ರೀತಿಯಲ್ಲಿ ಆಯ್ಕೆ ಮಾಡಲಾಗುತ್ತದೆ (ಪ್ರಸ್ತುತ ಭಾಗಶಃ ಪರಿಹಾರವು ಅತೃಪ್ತಿಕರವಾಗಿದ್ದರೆ) ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಸಾಬೀತಾಗುತ್ತದೆ. ಮೌಲ್ಯಮಾಪನ ಮಾಡಲು ಮುಂದಿನ ವೇರಿಯೇಬಲ್ನ ಆಯ್ಕೆಯು ವಿಶೇಷವಾಗಿ ಮುಖ್ಯವಾಗಿದೆ, ಏಕೆಂದರೆ ಇದು ಚಾಲನೆಯಲ್ಲಿರುವ ಸಮಯದಲ್ಲಿ ಘಾತೀಯ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಉಂಟುಮಾಡಬಹುದು. ಅತೃಪ್ತಿಯನ್ನು ಸಾಧ್ಯವಾದಷ್ಟು ಬೇಗ ಸಾಬೀತುಪಡಿಸಲು, ನಿಯೋಜಿಸಿದ ನಂತರ ಕೆಲವು ಪರ್ಯಾಯಗಳನ್ನು ಬಿಟ್ಟುಹೋಗುವ ಅಸ್ಥಿರಗಳು ಆದ್ಯತೆಯಾಗಿರುತ್ತವೆ. ವೇರಿಯೇಬಲ್/ಮೌಲ್ಯ ಜೋಡಿಗಳ ತೃಪ್ತಿ ಅಥವಾ ಅತೃಪ್ತಿಯನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಈ ಕಲ್ಪನೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು. ನಿರ್ದಿಷ್ಟವಾಗಿ, ಆಯ್ಕೆ ಮಾಡಲಾದ ಮುಂದಿನ ವೇರಿಯೇಬಲ್ ಪ್ರಸ್ತುತ ಭಾಗಶಃ ಪರಿಹಾರದೊಂದಿಗೆ ಸ್ಥಿರವಾಗಿರುವ ಕನಿಷ್ಠ ಸಂಖ್ಯೆಯ ಮೌಲ್ಯಗಳನ್ನು ಹೊಂದಿದೆ. ಪ್ರತಿಯಾಗಿ, ಭಾಗಶಃ ಸ್ಥಿರತೆಯನ್ನು ಪರಿಶೀಲಿಸುವ ಮೂಲಕ ಅಥವಾ ಮೇಲೆ ಚರ್ಚಿಸಲಾದ ಪರಿಗಣಿಸಲಾದ ಯಾವುದೇ ಲುಕ್ ಫಾರ್ವರ್ಡ್ ತಂತ್ರಗಳನ್ನು ಬಳಸುವ ಮೂಲಕ ಸ್ಥಿರತೆಯನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡಬಹುದು. ವೇರಿಯೇಬಲ್ಗೆ ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಯೋಜಿಸಲು ಮೌಲ್ಯಗಳನ್ನು ಆದೇಶಿಸಲು ಈ ಕೆಳಗಿನ ಮೂರು ವಿಧಾನಗಳಿವೆಃ ಕನಿಷ್ಠ-ಸಂಘರ್ಷಗಳುಃ ಆದ್ಯತೆಯ ಮೌಲ್ಯಗಳು ಮುಂಚಿತವಾಗಿ ನೋಡುವ ಮೂಲಕ ಮೌಲ್ಯಮಾಪನ ಮಾಡಿದಂತೆ ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ಗಳ ಡೊಮೇನ್ನಿಂದ ಕನಿಷ್ಠ ಒಟ್ಟು ಮೌಲ್ಯಗಳನ್ನು ತೆಗೆದುಹಾಕುವುದು; ಗರಿಷ್ಠ-ಡೊಮೇನ್-ಗಾತ್ರಃ ಆದ್ಯತೆಯ ಮೌಲ್ಯಗಳು ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ಗಳಿಗಾಗಿ ಅವರು ಉತ್ಪಾದಿಸುವ ಚಿಕ್ಕ ಡೊಮೇನ್ನಲ್ಲಿ ಮೌಲ್ಯಗಳ ಸಂಖ್ಯೆಯನ್ನು ಗರಿಷ್ಠಗೊಳಿಸುವುದು, ಮುಂದೆ ನೋಡುವ ಮೂಲಕ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ; ಅಂದಾಜು ಪರಿಹಾರಗಳುಃ ಆದ್ಯತೆಯ ಮೌಲ್ಯಗಳು ಗರಿಷ್ಠ ಸಂಖ್ಯೆಯ ಪರಿಹಾರಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ, ಮುಂಚಿತವಾಗಿ ನೋಡುವ ಮೂಲಕ ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದರಿಂದ ನಿಯೋಜಿಸದ ವೇರಿಯೇಬಲ್ಗಳ ಡೊಮೇನ್ಗಳಲ್ಲಿ ಉಳಿದಿರುವ ಎಲ್ಲಾ ಮೌಲ್ಯಗಳು ಪರಸ್ಪರ ಸ್ಥಿರವಾಗಿವೆ ಎಂದು ಊಹಿಸುತ್ತದೆ; ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಮುಂದೆ ನೋಡುವ ಪರಿಣಾಮವಾಗಿ ಎಲ್ಲಾ ಡೊಮೇನ್ಗಳ ಗಾತ್ರವನ್ನು ಗುಣಿಸುವ ಮೂಲಕ ಮೌಲ್ಯದ ಆದ್ಯತೆಯನ್ನು ಪಡೆಯಲಾಗುತ್ತದೆ. ಈ ತಂತ್ರಗಳು ದೊಡ್ಡ ಸಮಸ್ಯೆಗಳಿಗೆ, ವಿಶೇಷವಾಗಿ ಸಣ್ಣ-ಪುಟ್ಟ ಸಂಘರ್ಷಗಳಿಗೆ ಉಪಯುಕ್ತವಾಗಿವೆ ಎಂದು ಪ್ರಯೋಗಗಳು ಸಾಬೀತುಪಡಿಸಿದವು. ಯಾದೃಚ್ಛಿಕತೆಯನ್ನು ಕೆಲವೊಮ್ಮೆ ಚಲಪರಿಮಾಣ ಅಥವಾ ಮೌಲ್ಯವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಸಹ ಬಳಸಲಾಗುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಕೆಲವು ಅಳತೆಗಳ ಪ್ರಕಾರ ಎರಡು ಚಲಪರಿಮಾಣಗಳನ್ನು ಸಮಾನವಾಗಿ ಆದ್ಯತೆ ನೀಡಿದರೆ, ಆಯ್ಕೆಯನ್ನು ಯಾದೃಚ್ಛಿಕವಾಗಿ ಮಾಡಬಹುದು. ಉಲ್ಲೇಖಗಳು ನಿರ್ಬಂಧಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಹುಡುಕಾಟ ಕ್ರಮಾವಳಿಗಳು