algorytm.org

Implementacja w C#



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Odległość Levenshteina (odległość edycyjna) - Implementacja w C#
Ocena użytkownikóww: *****  / 6
SłabyŚwietny
Nadesłany przez Tomasz Lubiński, 06 lutego 2009 01:00
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

Levenshtein - CS/Levenshtein.cs:
using System;


// Odleglosc Levenshteina (odleglosc edycyjna)
// www.algorytm.org
// (c) 2009 Tomasz Lubinski

namespace Levenshtein___CS
{
	/// <summary>
	/// Odleglosc Levenshteina (odleglosc edycyjna)
	/// www.algorytm.org
	/// (c) 2009 Tomasz Lubinski
	/// </summary>
	class Levenshtein
	{
		
		/// <summary>
		/// Odleglosc Levenshteina (odleglosc edycyjna)
		/// </summary>
		/// <param name="s">pierwszy ciag</param>
		/// <param name="t">drugi ciaf</param>
		/// <returns>Odleglosc Levenshteina</returns>
		private static int levenshtein(String s, String t)
		{
			int i, j, m, n, cost;
			int [,]d;

			m = s.Length;
			n = t.Length;
	   
			d = new int[m+1, n+1];

			for (i=0; i<=m; i++)
				d[i, 0] = i;
			for (j=1; j<=n; j++)
				d[0, j] = j;

			for (i=1; i<=m; i++)
			{
				for (j=1; j<=n; j++)
				{
					if (s[i-1] == t[j-1])
						cost = 0;
					else
						cost = 1;

					d[i, j] = Math.Min(d[i-1, j] + 1,   /* remove */
						Math.Min(d[i, j-1] + 1,         /* insert */
						   d[i-1, j-1] + cost));        /* change */
				}
			}

			return d[m, n];
		}

		/// <summary>
		/// Odleglosc Levenshteina (odleglosc edycyjna).
		/// </summary>
		[STAThread]
		static void Main(string[] args)
		{
			String s, t;

			Console.WriteLine("Podaj pierwszy ciag");
			s = Console.ReadLine();

			Console.WriteLine("Podaj drug ciag");
			t = Console.ReadLine();

			Console.WriteLine("Odleglosc Levenshteina wynosi: " + levenshtein(s, t));
		}
	}
}
Dodaj komentarz