ورود

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : تابع levenshtein



saeed.spore
November 21st, 2016, 22:55
سلام دوستان میشه درباره این دستور ی توضیحی بدید
levenshtein (http://www.w3schools.com/php/func_string_levenshtein.asp)

kavoshco
November 21st, 2016, 23:15
سلام ، همونطور که نوشته فاصله ی بین حروف رشته هارو محاسبه میکنه

فاصله لون‌اشتاین یا فاصله ویرایش در نظریه داده و علوم کامپیوتر متری برای محاسبه میزان تفاوت میان دو رشته است.
فاصله لون‌اشتاین بین دو رشته بوسیله کمترین تعداد عملیات مورد نیاز برای تبدیل یک رشته به رشته دیگر معین می‌شود، که یک عملیات می‌تواند یک ضمیمه، یا جایگزینی یک کارکتر باشد.تعمیم فاصله لوناشتاین (فاصله دامرا-لون‌اشتاین) اجازه ترانهش دو کاراکتر را به عنوان یک عملیات می‌دهد.

saeed.spore
November 21st, 2016, 23:45
سلام ، همونطور که نوشته فاصله ی بین حروف رشته هارو محاسبه میکنه

فاصله لون‌اشتاین یا فاصله ویرایش در نظریه داده و علوم کامپیوتر متری برای محاسبه میزان تفاوت میان دو رشته است.
فاصله لون‌اشتاین بین دو رشته بوسیله کمترین تعداد عملیات مورد نیاز برای تبدیل یک رشته به رشته دیگر معین می‌شود، که یک عملیات می‌تواند یک ضمیمه، یا جایگزینی یک کارکتر باشد.تعمیم فاصله لوناشتاین (فاصله دامرا-لون‌اشتاین) اجازه ترانهش دو کاراکتر را به عنوان یک عملیات می‌دهد.

آقا ممنون ولی یک سوال
چرا وقتی این دستور را میزنم echo levenshtein("Hello World","ello World",10,20,30);
30 را نمایشمیده
؟!
اگه 0 هم بزنم 0 را نمیشا میده
این 3 متغیر را میشه ی توضیحی بدید ممنون میشم

T.Toosi
November 21st, 2016, 23:49
سلام، تعاریف الگوریتم ـش به زبان فارسی زیاد هست اگر جستجوی کنید، مخصوصا ویکی پدیا با مثال درستی این نظریه هم به فارسی اثبات کرده، بیشترین کاربردش برای پیدا کردن نزدیکترین match بین یک لیست هست، به طور مثال شما یک آرایه دارید با مقدار های wht,ghy,cfv حالا شما از کاربر ورودی whht میگری که اصلا در لیست ما وجود ندارد، اینجا با کمک تابع levenshtein و یک حلقه میتونید نزدیکترین نتیجه رو پیدا کنید که همان wht خانه اول لیست ما هست. از این نظریه در پایگاه ها داده خیلی استفاده میشود.

saeed.spore
November 22nd, 2016, 00:47
سلام، تعاریف الگوریتم ـش به زبان فارسی زیاد هست اگر جستجوی کنید، مخصوصا ویکی پدیا با مثال درستی این نظریه هم به فارسی اثبات کرده، بیشترین کاربردش برای پیدا کردن نزدیکترین match بین یک لیست هست، به طور مثال شما یک آرایه دارید با مقدار های wht,ghy,cfv حالا شما از کاربر ورودی whht میگری که اصلا در لیست ما وجود ندارد، اینجا با کمک تابع levenshtein و یک حلقه میتونید نزدیکترین نتیجه رو پیدا کنید که همان wht خانه اول لیست ما هست. از این نظریه در پایگاه ها داده خیلی استفاده میشود.

سلام استاد خیلی ممنون ولی من کلا برام ابهامی پیش اومده میدونم ولی این که اون خط دوم مشکل دارم چرا اینطوریه دلیلش چیه ؟!

T.Toosi
November 22nd, 2016, 01:10
سلام استاد خیلی ممنون ولی من کلا برام ابهامی پیش اومده میدونم ولی این که اون خط دوم مشکل دارم چرا اینطوریه دلیلش چیه ؟!

برای اینکه با 3 تا پارامتر آخری تابع بتونید کار کنید باید به الگوریتم اشتاین مسلط باشید، وقتی 2 تا رشته رو با این تابع مقایسه میکنید این تابع بهتون تعداد عملیات هایی که باید بروی رشته اول انجام شود تا شبیه رشته دوم باشد را بازگشت میدهد، insert, replace و delete که سه تا پارامتر آخر تابع هستند میتونید عدد بدید مثلا insert = 2 یعنی فقط تا 2 بار اجازه می دهید چیزی به رشته اول اضافه کند تا شبیه رشته دوم شود. اگر با 2 بار insert رشته اول ساخته و match شد تعداد عملیات هایی که روی رشته اول انجام شده است تا با رشته دوم match شود برمیگردونه.

در مثال hello world بالا شما اجازه دادید 10 بار insert و 20 باز replace و 30 بار delet اتفاق بیوفتد تا رشته اول match رشته دوم شود که مقدار بازگشتی 30 هست یعنی 30 بار باید عملیات (insert or delete or replace) روی رشته اول انجام شود تا شبیه رشته دوم شود.

hello world
ello World

اگر یک عملیات delete بروی کارکتر اول انجام شود 2 رشته match میشوند پس مقدار بازگشتی تابع 1 هست.

saeed.spore
November 22nd, 2016, 22:50
برای اینکه با 3 تا پارامتر آخری تابع بتونید کار کنید باید به الگوریتم اشتاین مسلط باشید، وقتی 2 تا رشته رو با این تابع مقایسه میکنید این تابع بهتون تعداد عملیات هایی که باید بروی رشته اول انجام شود تا شبیه رشته دوم باشد را بازگشت میدهد، insert, replace و delete که سه تا پارامتر آخر تابع هستند میتونید عدد بدید مثلا insert = 2 یعنی فقط تا 2 بار اجازه می دهید چیزی به رشته اول اضافه کند تا شبیه رشته دوم شود. اگر با 2 بار insert رشته اول ساخته و match شد تعداد عملیات هایی که روی رشته اول انجام شده است تا با رشته دوم match شود برمیگردونه.

در مثال hello world بالا شما اجازه دادید 10 بار insert و 20 باز replace و 30 بار delet اتفاق بیوفتد تا رشته اول match رشته دوم شود که مقدار بازگشتی 30 هست یعنی 30 بار باید عملیات (insert or delete or replace) روی رشته اول انجام شود تا شبیه رشته دوم شود.

hello world
ello World

اگر یک عملیات delete بروی کارکتر اول انجام شود 2 رشته match میشوند پس مقدار بازگشتی تابع 1 هست.


خیلی ممنون همیشه کارتون درسته . آقا
منم ی بار دیگه تست کردم ولی حتی داخل این سایت که دیدم
نتیجه را همونی میده که داخل ولیو دلیت میزنیم
مثلا 30
همون 30 را چاپ میکنه
echo levenshtein("Hello World","ello World",0,0,1);

اینطوریزدم
همون 1 را بر میگردونه