Ir al contenido principal

NPL:RUST: MIN-EDIT-DISTANCE - ALGORITHM

 The Algorithm:




Rust implementation:


use
std::cmp::min; fn min_edit_distance(source: &str, target: &str) -> usize { let n = source.chars().count(); let m = target.chars().count(); let mut d = vec![vec![0; m + 1]; n + 1]; for i in 0..=n { d[i][0] = i; } for j in 0..=m { d[0][j] = j; } for i in 1..=n { for j in 1..=m { let cost = if source.chars().nth(i - 1) == target.chars().nth(j - 1) { 0 } else { 1 }; d[i][j] = min( d[i - 1][j] + 1, min(d[i][j - 1] + 1, d[i - 1][j - 1] + cost), ); } } d[n][m] } fn main() { let args: Vec<String> = std::env::args().collect(); if args.len() != 3 { println!("Usage: {} <source> <target>", args[0]); return; } let source = &args[1]; let target = &args[2]; let distance = min_edit_distance(source, target); println!("The minimum edit distance between '{}' and '{}' is {}.", source, target, distance); }

How to compile:


  1. Create a new project in rust:  cargo new mind_dist
  2. edit src/main.rs and paste the code
  3. build the program  cargo build --release
  4. use the program target/mind_dist <source> <target>

Comentarios

Entradas populares de este blog

[DATA SCIENCE] [R PROGRAMMING] [DATA VISUALIZATION] Explorando Técnicas de Análisis y Visualización de Datos en R

  Introducción En el análisis de datos, la correcta partición y visualización de los datasets es crucial para obtener conclusiones precisas y valiosas. En este artículo, exploraremos diversas técnicas en R para particionar datasets, crear histogramas, scatterplots, boxplots, y ajustar curvas de regresión y suavizado. 1. Partición de Datasets La partición de datasets es una etapa fundamental en el proceso de machine learning. Permite dividir los datos en conjuntos de entrenamiento, validación y prueba para asegurar que nuestros modelos se entrenen y evalúen adecuadamente. Función para Particionar Datasets # Función para automatizar la partición de datasets partition_data <- function(data, target_column, train_ratio = 0.7, validate_ratio = NULL, seed = 123) {   # Establecer la semilla para reproducibilidad   set.seed(seed)      # Crear partición de entrenamiento   training_ids <- createDataPartition(data[[target_column]], p = train_ratio, list = FA...

[DATA SCIENCE] Guion de formación en matemáticas y R sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales y diagramas ROC.

Guion de Formación en Matemáticas y R Guion de Formación en Matemáticas y R Este guion está diseñado para aprender y consolidar conocimientos sobre matrices de confusión, diagramas de mosaico, análisis de componentes principales (PCA) y diagramas ROC utilizando la plataforma R. 1. Matrices de Confusión Teoría Matemática: Definición: Una matriz de confusión evalúa el rendimiento de un modelo de clasificación. Consiste en una tabla que compara las predicciones del modelo con los valores reales. Componentes: Verdaderos Positivos (TP) Falsos Positivos (FP) Verdaderos Negativos (TN) Falsos Negativos (FN) Métricas derivadas: Precisión: Precision = TP / (TP + FP) Sensibilidad: Recall = TP / (TP + FN) Especificidad: Specificity = TN /...

[Machine Learning][Python][Clasificación] Understanding Support Vector Machines with Python

Support Vector Machines con Python Support Vector Machines con Python Support Vector Machines (SVM) son algoritmos de aprendizaje supervisado muy potentes, a menudo utilizados para problemas de clasificación. Este artículo demuestra cómo utilizar SVM en Python con la biblioteca scikit-learn y proporciona una explicación de la teoría subyacente. 1. Implementación en Python Código en Python: import numpy as np # Biblioteca para trabajar con arreglos y operaciones matemáticas import matplotlib.pyplot as plt # Biblioteca para crear gráficos y visualizaciones from sklearn import datasets # Módulo para cargar y manejar conjuntos de datos estándar from sklearn.model_selection import train_test_split # Función para dividir los datos en entrenamiento y prueba from sklearn.svm import SVC # Clase para implementar Support Vector Machines # 1. Cargar datos # Usaremos el dataset de iris, seleccionando solo dos clases para sim...