දළ විශ්ලේෂණය
තවත් සමහරු ගස් රූප සටහන් වැනි හොඳ රූප සටහන් උදාහරණ ලබා දී ඇත. මම සරල කේත උදාහරණ කිසිවක් දුටුවේ නැත. එබැවින් මගේ පැහැදිලි කිරීමට අමතරව, විවිධ ඇල්ගොරිතම කාණ්ඩවල සංකීර්ණත්වය විදහා දැක්වීම සඳහා සරල මුද්රණ ප්රකාශ සහිත ඇල්ගොරිතම කිහිපයක් ලබා දෙන්නෙමි.
පළමුව, ඔබට https://en.wikipedia.org/wiki/Logarithm වෙතින් ලබා ගත හැකි Logarithm පිළිබඳ පොදු අදහසක් ලබා ගැනීමට ඔබට අවශ්ය වනු ඇත . ස්වාභාවික විද්යා භාවිතය e
සහ ස්වාභාවික ලොගය. ඉංජිනේරු ගෝලයන් log_10 (ලොග් බේස් 10) භාවිතා කරන අතර පරිගණක විද්යා scientists යින් ලොග්_2 (ලොග් බේස් 2) බොහෝ දේ භාවිතා කරනු ඇත, මන්ද පරිගණක ද්විමය පදනම් වේ. සමහර විට ඔබ ස්වාභාවික ලොග් වල කෙටි යෙදුම් දකිනු ඇත ln()
, ඉංජිනේරුවන් සාමාන්යයෙන් _10 අතහැර දමා භාවිතා log()
කර log_2 ලෙස කෙටියෙන් දක්වනු ලැබේ lg()
. සියලුම වර්ගවල ල ar ු ගණක සමාන ආකාරයකින් වර්ධනය වේ, එම නිසා ඒවා එකම කාණ්ඩයට අයත් වේ log(n)
.
ඔබ පහත කේත උදාහරණ දෙස බලන විට, මම නිර්දේශ කරන්නේ O (1), පසුව O (n), පසුව O (n ^ 2) දෙස බලන්න. ඔබ ඔවුන් සමඟ හොඳ වූ පසු, අනෙක් අය දෙස බලන්න. එකම වර්ගීකරණයකට සියුම් වෙනස්කම් තවමත් හේතු විය හැකි ආකාරය නිරූපණය කිරීම සඳහා මම පිරිසිදු උදාහරණ මෙන්ම වෙනස්කම් ද ඇතුළත් කර ඇත්තෙමි.
O (1), O (n), O (logn) යනාදිය පන්ති හෝ වර්ධන කාණ්ඩ ලෙස ඔබට සිතිය හැකිය. සමහර කාණ්ඩ අනෙක් ඒවාට වඩා වැඩි කාලයක් ගතවනු ඇත. මෙම කාණ්ඩ අපට ඇල්ගොරිතම කාර්ය සාධනය ඇණවුම් කිරීමේ ක්රමයක් ලබා දේ. ආදාන n වැඩෙන විට සමහරක් වේගයෙන් වර්ධනය වේ. පහත වගුවේ දැක්වෙන්නේ සංඛ්යාත්මකව ඉහත සඳහන් කළ වර්ධනයයි. පහත වගුවේ ලොග් (n) ලොග්_2 හි සිවිලිම ලෙස සිතන්න.
විවිධ විශාල O කාණ්ඩවල සරල කේත උදාහරණ:
O (1) - නියත කාල උදාහරණ:
ඇල්ගොරිතම 1 වරක් හලෝ මුද්රණය කරන අතර එය n මත රඳා නොපවතින බැවින් එය සෑම විටම නියත වේලාවක ක්රියාත්මක වේ, එබැවින් එය එසේ වේ O(1)
.
print "hello";
ඇල්ගොරිතම 2 හලෝ 3 වතාවක් මුද්රණය කරයි, කෙසේ වෙතත් එය ආදාන ප්රමාණය මත රඳා නොපවතී. N වර්ධනය වන විට පවා, මෙම ඇල්ගොරිතම සෑම විටම හලෝ 3 වතාවක් පමණක් මුද්රණය කරයි. 3 යැයි පැවසීම නියතයක් බැවින් මෙම ඇල්ගොරිතම ද O(1)
වේ.
print "hello";
print "hello";
print "hello";
O (ලොග් (n)) - ල ar ු ගණක උදාහරණ:
- ඇල්ගොරිතම 3 - මෙය "ලොග්_2" ලෙස ක්රියා කරයි
ඇල්ගොරිතම 3 මඟින් log_2 (n) තුළ ක්රියාත්මක වන ඇල්ගොරිතමයක් පෙන්නුම් කරයි. ෆෝ ලූපයේ පශ්චාත් ක්රියාකාරිත්වය i හි වත්මන් අගය 2 කින් i
ගුණ කරන බැවින් 1 සිට 2 දක්වා 4 සිට 8 සිට 16 සිට 32 දක්වා ...
for(int i = 1; i <= n; i = i * 2)
print "hello";
- ඇල්ගොරිතම 4 - මෙය "ලොග්_3" ලෙස ක්රියා කරයි
ඇල්ගොරිතම 4 මඟින් log_3 නිරූපණය කරයි. දැන්වීම i
1 සිට 3 දක්වා 9 සිට 27 දක්වා ...
for(int i = 1; i <= n; i = i * 3)
print "hello";
- ඇල්ගොරිතම 5 - මෙය "log_1.02" ලෙස ක්රියා කරයි
ඇල්ගොරිතම 5 වැදගත් වේ, එය සංඛ්යාව 1 ට වඩා වැඩි නම් සහ ප්රති result ලය නැවත නැවතත් තමාට එරෙහිව ගුණ කරන තාක් කල්, ඔබ ල ar ු ගණක ඇල්ගොරිතමයක් දෙස බලන බව පෙන්වීමට උපකාරී වේ.
for(double i = 1; i < n; i = i * 1.02)
print "hello";
O (n) - රේඛීය කාල උදාහරණ:
මෙම ඇල්ගොරිතම සරලයි, එය හෙලෝ n වාරයක් මුද්රණය කරයි.
for(int i = 0; i < n; i++)
print "hello";
මෙම ඇල්ගොරිතමය විචල්යතාවයක් පෙන්නුම් කරයි, එහිදී එය හෙලෝ n / 2 වතාවක් මුද්රණය කරයි. n / 2 = 1/2 * n. අපි 1/2 නියතය නොසලකා හැර මෙම ඇල්ගොරිතම O (n) බව දකිමු.
for(int i = 0; i < n; i = i + 2)
print "hello";
O (n * log (n)) - nlog (n) උදාහරණ:
මෙය O(log(n))
සහ O(n)
. ලූප සඳහා කූඩු දැමීම අපට ලබා ගැනීමට උපකාරී වේO(n*log(n))
for(int i = 0; i < n; i++)
for(int j = 1; j < n; j = j * 2)
print "hello";
ඇල්ගොරිතම 9 ඇල්ගොරිතම 8 ට සමාන ය, නමුත් සෑම ලූපයක්ම වෙනස්කම් වලට ඉඩ දී ඇත, එහි ප්රති result ලය තවමත් අවසාන ප්රති result ලය වේ O(n*log(n))
for(int i = 0; i < n; i = i + 2)
for(int j = 1; j < n; j = j * 3)
print "hello";
O (n ^ 2) - n වර්ග උදාහරණ:
O(n^2)
ලූප සඳහා කැදැලි ප්රමිතියෙන් පහසුවෙන් ලබා ගත හැකිය.
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
print "hello";
ඇල්ගොරිතම 10 මෙන්, නමුත් සමහර වෙනස්කම් සහිතව.
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j = j + 2)
print "hello";
O (n ^ 3) - n කියුබ් උදාහරණ:
මෙය ඇල්ගොරිතම 10 වැනි ය, නමුත් 2 වෙනුවට ලූප 3 ක් ඇත.
for(int i = 0; i < n; i++)
for(int j = 0; j < n; j++)
for(int k = 0; k < n; k++)
print "hello";
ඇල්ගොරිතම 12 මෙන්, නමුත් තවමත් ලබා දෙන සමහර වෙනස්කම් සමඟ O(n^3)
.
for(int i = 0; i < n; i++)
for(int j = 0; j < n + 5; j = j + 2)
for(int k = 0; k < n; k = k + 3)
print "hello";
සාරාංශය
ඉහත දැක්වෙන්නේ forward ජු ඉදිරි උදාහරණ කිහිපයක් වන අතර විශ්ලේෂණය සැබවින්ම වෙනස් නොකරන සියුම් වෙනස්කම් හඳුන්වා දිය හැකි ආකාරය නිරූපණය කිරීමට උපකාරී වේ. එය ඔබට ප්රමාණවත් අවබෝධයක් ලබා දෙනු ඇතැයි අපේක්ෂා කරමු.