public void AlphabetTranslatingIntsToChars() { char[] set = new[] { 'a', 'b', 'c', 'd' }; Alphabet alphabet = new Alphabet(set); List<int> list = new List<int>() {0, 2, 1, 0, 2}; var s = alphabet.Translate(list); Assert.AreEqual("acbac", s); }
public void AlphabetTranslatingCharsToInts() { char[] set = new[] { 'a', 'b', 'c', 'd' }; Alphabet alphabet = new Alphabet(set); var list = alphabet.Translate("baca"); Assert.AreEqual(1, list[0]); Assert.AreEqual(0, list[1]); Assert.AreEqual(2, list[2]); Assert.AreEqual(0, list[3]); }
/// <summary> /// Metoda generuje losowy automat (o losowej poprawnej funkcji przejścia) o zadanej ilości stanów i alfabecie /// </summary> /// <param name="states">Ilość stanów</param> /// <param name="alphabet">alfabet</param> /// <returns>Losowy automat</returns> public static Machine GenerateRandomMachine(int states, Alphabet alphabet) { double[,] SF = new double[states, alphabet.Letters.Length]; for (int i = 0; i < states; i++) { for (int j = 0; j < alphabet.Letters.Length; j++) { SF[i, j] = R.Next(states); } } return new Machine(alphabet, SF); }
/// <summary> /// Metoda inicjalizująca parametry PSO /// </summary> /// <param name="words">Lista par słów testowych</param> /// <param name="relation">Delegat opisujący relacje indukowaną przez język</param> /// <param name="MaxStates">Maksymalna ilość stanów osiągalna przez automat</param> /// <param name="A">Alfabet dla którego rozwiązywany jest problem</param> public static void Initialize(List<Tuple<int[], int[]>> words, LanguageRelation relation, int MaxStates, Alphabet A,List<int[]> allwords) { Particles = new List<Particle>(); Words = words; AllWords = allwords; MachinePSO.relation = relation; BestError = int.MaxValue; BestMachine = Machine.GenerateRandomMachine(1, A); alphabet = A; MachinePSO.MaxStates = MaxStates; }
/// <summary> /// Konstruktor Automatu /// </summary> /// <param name="A"> Alfabet przypisany do automatu</param> /// <param name="SF"> Funkcja przejścia automatu </param> public Machine(Alphabet A, double[,] SF) { alphabet = A; stateFunction = SF; }