ExpSolver

Contiene tutti i metodi necessari per ottenere una funzione booleana in sintesi minima partendo dalla sua rappresentazione postfissa.  Ogni metodo risulta essere una trasposizione di un determinato step dell’algoritmo di quine-mccluskey.  Poichè non risulta necessario instanziare più di un oggetto della classe, la suddetta è stata pensata come un singleton.

Summary
ExpSolverContiene tutti i metodi necessari per ottenere una funzione booleana in sintesi minima partendo dalla sua rappresentazione postfissa.
Functions
insertValuesRestituisce una stringa ottenuta sostituendo in exp i lettarali con i valori ad essi associati.
getValueRestituisce il valore (carattere) associato alla variabile in input.
computeTruthTableRestituisce una lista contenente in ogni riga un oggetto Term, che contiene il valore di verita’ che la funzione descritta da exp assume in corrispondenza dei valori di inputValue.
computeMinTermTabRestituisce la truthTab privata dei Term in corrispondenza dei quali la funzione assume valore 0.
hammingDistRestituisce la distanza di hamming che intercorre tra i termini l ed l1.
branchAndBoundImplementa l’algoritmo di branchAndBound al fine di trovare tutte le possibili forme di sintesi minima della funzione.
duplicateMinCoverDuplica la tabella di copertura in ingresso.
simplifyCouplesRiempie fimpTab con tutti gli implicanti primi che riesce a trovare.
checkConditionControlla se i due termini differisco di un solo valore positivo e se la distanza di hamming tra i due termini è uno.
computeFimpTabCalcola la tabella degli implicanti primi
computeFimpTabRestituisce la tabella di copertura che può essere vuota nel caso in cui tutti gli imlicanti primi essenziali siano stati
simplifyCoverTabSemplifica la tabella di copertura controllando un’eventuale dominanza di riga o di colonna.
getCountOfObjRitorna il numero degli elementi non nulli,per ogni riga, nella tabella.
simplifyRowsRestituisce la tabella privata della riga.
simplifyRowsRestituisce la tabella privata della colonna.
getExpVarRestituisce la lista delle variabili presenti in exp.
getCountExpVarRestituisce il numero delle variabili presenti in exp.
simplifyTermRestituisce il termine ottenuto applicando l’OR logico a t e t1, tenendo conto delle condizioni di indifferenza “-”.
getCountTrueRestituisce il numero di 1 presenti in term
computeExpCalcola e restituisce il valore della funzione in input.
getBinaryRepRestituisce una contenente la rappresentazione binaria di n.

Functions

insertValues

private static String insertValues(String exp,
List<String> inputValues,
List<Character> variables)

Restituisce una stringa ottenuta sostituendo in exp i lettarali con i valori ad essi associati.

getValue

private static char getValue(char x,
List<String> inputValues,
List<Character> variables)

Restituisce il valore (carattere) associato alla variabile in input.

computeTruthTable

static List<Term> computeTruthTable(List<List<String>> inputValues,
List<Character> variables,
String exp)

Restituisce una lista contenente in ogni riga un oggetto Term, che contiene il valore di verita’ che la funzione descritta da exp assume in corrispondenza dei valori di inputValue.

computeMinTermTab

public static List<Term> computeMinTermTab(List<Term> truthTab)

Restituisce la truthTab privata dei Term in corrispondenza dei quali la funzione assume valore 0.

hammingDist

private static int hammingDist(List<String> l,
List<String> l1)

Restituisce la distanza di hamming che intercorre tra i termini l ed l1.

branchAndBound

static List<ImpTerm> branchAndBound(List<ImpTerm> minCover,
List<List<ImpTerm>> coverTab)

Implementa l’algoritmo di branchAndBound al fine di trovare tutte le possibili forme di sintesi minima della funzione.

duplicateMinCover

private static List<List<ImpTerm>> duplicateMinCover(List<ImpTerm> minCover,
int n)

Duplica la tabella di copertura in ingresso.

simplifyCouples

public static List<ImpTerm> simplifyCouples(List<ImpTerm> impTable,
List<ImpTerm> fimpTab,
List<List<ImpTerm>> couples)

Riempie fimpTab con tutti gli implicanti primi che riesce a trovare.

checkCondition

private static boolean checkCondition(List<ImpTerm> impTable,
int i,
int k)

Controlla se i due termini differisco di un solo valore positivo e se la distanza di hamming tra i due termini è uno.

computeFimpTab

static List<ImpTerm> computeFimpTab(String exp,
List<Term> minTab,
List<ImpTerm> fimpTab,
List<List<ImpTerm>> tempFimpTab,
List<List<ImpTerm>> couples)

Calcola la tabella degli implicanti primi

computeFimpTab

Restituisce la tabella di copertura che può essere vuota nel caso in cui tutti gli imlicanti primi essenziali siano stati

simplifyCoverTab

private static List<List<ImpTerm>> simplifyCoverTab(
   List<List<ImpTerm>> coverTab
)

Semplifica la tabella di copertura controllando un’eventuale dominanza di riga o di colonna.

getCountOfObj

private static List<Integer> getCountOfObj(List<List<ImpTerm>> coverTab)

Ritorna il numero degli elementi non nulli,per ogni riga, nella tabella.

simplifyRows

private static List<List<ImpTerm>> simplifyRows(List<List<ImpTerm>> coverTab,
List<Integer> count)

Restituisce la tabella privata della riga.

simplifyRows

Restituisce la tabella privata della colonna.

getExpVar

static List<Character> getExpVar(String exp)

Restituisce la lista delle variabili presenti in exp.

getCountExpVar

static int getCountExpVar(String exp)

Restituisce il numero delle variabili presenti in exp.

simplifyTerm

private static List<String> simplifyTerm(List<String> t,
List<String> t1)

Restituisce il termine ottenuto applicando l’OR logico a t e t1, tenendo conto delle condizioni di indifferenza “-”.

getCountTrue

private static int getCountTrue(List<String> term)

Restituisce il numero di 1 presenti in term

computeExp

private static String computeExp(String exp)

Calcola e restituisce il valore della funzione in input.

getBinaryRep

private static List<String> getBinaryRep(int n,
int dim)

Restituisce una contenente la rappresentazione binaria di n.

private static String insertValues(String exp,
List<String> inputValues,
List<Character> variables)
Restituisce una stringa ottenuta sostituendo in exp i lettarali con i valori ad essi associati.
private static char getValue(char x,
List<String> inputValues,
List<Character> variables)
Restituisce il valore (carattere) associato alla variabile in input.
static List<Term> computeTruthTable(List<List<String>> inputValues,
List<Character> variables,
String exp)
Restituisce una lista contenente in ogni riga un oggetto Term, che contiene il valore di verita’ che la funzione descritta da exp assume in corrispondenza dei valori di inputValue.
public static List<Term> computeMinTermTab(List<Term> truthTab)
Restituisce la truthTab privata dei Term in corrispondenza dei quali la funzione assume valore 0.
private static int hammingDist(List<String> l,
List<String> l1)
Restituisce la distanza di hamming che intercorre tra i termini l ed l1.
static List<ImpTerm> branchAndBound(List<ImpTerm> minCover,
List<List<ImpTerm>> coverTab)
Implementa l’algoritmo di branchAndBound al fine di trovare tutte le possibili forme di sintesi minima della funzione.
private static List<List<ImpTerm>> duplicateMinCover(List<ImpTerm> minCover,
int n)
Duplica la tabella di copertura in ingresso.
public static List<ImpTerm> simplifyCouples(List<ImpTerm> impTable,
List<ImpTerm> fimpTab,
List<List<ImpTerm>> couples)
Riempie fimpTab con tutti gli implicanti primi che riesce a trovare.
private static boolean checkCondition(List<ImpTerm> impTable,
int i,
int k)
Controlla se i due termini differisco di un solo valore positivo e se la distanza di hamming tra i due termini è uno.
static List<ImpTerm> computeFimpTab(String exp,
List<Term> minTab,
List<ImpTerm> fimpTab,
List<List<ImpTerm>> tempFimpTab,
List<List<ImpTerm>> couples)
Calcola la tabella degli implicanti primi
private static List<List<ImpTerm>> simplifyCoverTab(
   List<List<ImpTerm>> coverTab
)
Semplifica la tabella di copertura controllando un’eventuale dominanza di riga o di colonna.
private static List<Integer> getCountOfObj(List<List<ImpTerm>> coverTab)
Ritorna il numero degli elementi non nulli,per ogni riga, nella tabella.
private static List<List<ImpTerm>> simplifyRows(List<List<ImpTerm>> coverTab,
List<Integer> count)
Restituisce la tabella privata della riga.
static List<Character> getExpVar(String exp)
Restituisce la lista delle variabili presenti in exp.
static int getCountExpVar(String exp)
Restituisce il numero delle variabili presenti in exp.
private static List<String> simplifyTerm(List<String> t,
List<String> t1)
Restituisce il termine ottenuto applicando l’OR logico a t e t1, tenendo conto delle condizioni di indifferenza “-”.
private static int getCountTrue(List<String> term)
Restituisce il numero di 1 presenti in term
private static String computeExp(String exp)
Calcola e restituisce il valore della funzione in input.
private static List<String> getBinaryRep(int n,
int dim)
Restituisce una contenente la rappresentazione binaria di n.
Close