Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Cine suporta cheltuielile de jude...

Apartament Grecia - Kavala

obtinere venituri PFA / PFI in ti...

Recomandare Volvo
 Diferenta suprafata teren

Plafonare preturi energie

Vanzari foto - CIPA 2023

Recomandare perdele sau draperii ...
 Invertor Victron Easysolar-II 48/...

"Militarizarea" Antifraudei

Washington DC in 1940 - secvente ...

Miniatur Wunderland - Monaco
 Familia Simpson

plata impozit profit actiuni trad...

Extras de cont cu semnatura elect...

Ce parere aveti despre ascasa.de ...
 

Cea mai eficienta metoda de a calcula SoP sau PoS ?

- - - - -
  • Please log in to reply
12 replies to this topic

#1
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Cea mai eficienta metoda de a calcula SoP sau PoS ???

https://www.electron...-form-pos-form/
SoP = sum of product
Pos = product of sum

Avand expresia booleana: ( ^ = xor)
x1^x2^x9^x10^x11^x12^x15^x17^x18^x19^x21^x23^x24^x26^x29^x30^x32^x37^x38^x39^x40^x44^x47^x48^x49
trebuie sa obtin SoP si PoS.

M-am uitat la codul sursa java al programului BExpred_v0.8:
public TruthTable(BExprTree aTree) {
int varCount = aTree.getVarCount();
this.row_count = two_exp(varCount);
this.col_count = varCount + 1;
this.vars = (ArrayList) aTree.getVars().clone();
this.initializeTT();
boolean bArray[] = new boolean[this.col_count];
int c;
for (int i = 0; i < this.row_count; i++) {
	 c = 0;
	 for (int s = varCount - 1; s >= 0; s--) {
	 bArray[c++] = ((i >> s) & 1) == 1 ? true : false;
	 }
	 bArray[this.col_count - 1] = aTree.evaluate(bArray);
	 this.setRow(i, bArray);
}
}


Problema este row count care este 8388608
dupa evident arunca eroare deoarece incearca sa creeze un array de dimensiune prea mare in this.initializeTT():
this.tt = new boolean[this.row_count][this.col_count];

Din limita mea intelegere creaza true table pentru toate variabilele, ceea ce este foarte ineficient.

Edited by IvanMihai, 04 January 2020 - 20:33.


#2
karax

karax

    Guru Member

  • Grup: Senior Members
  • Posts: 21,839
  • Înscris: 14.10.2017
inca nu-l vad pe maccip pe subiect, o sa fie extrem de pasionat de problema deschisa de tine.

sigur are altceva de facut altfel asta e genul de problema care il atrage enorm

#3
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,294
  • Înscris: 10.08.2005
n-input xor este adevarat daca are un numar impar de intrari 1.

#4
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016

View PostMarianG, on 04 ianuarie 2020 - 20:48, said:

n-input xor este adevarat daca are un numar impar de intrari 1.
Stii cumva un mod matematic de a reprezenta asta?

BExpred v0.8 genereaza asta:

x1 ^ x2 =
(X1 + X2)*(!X1 + !X2)=
(x1 sau x2) si ((x1+1) sau (x2+1))=
(x1==1 sau x2==1) si (x1==0 sau x2==0)

x1 ^ x2 ^ x3 =
(X1 + X2 + X3)*(X1 + !X2 + !X3)*(!X1 + X2 + !X3)*(!X1 + !X2 + X3)
(x1==1 sau x2==1 sau x3==1) si (x1==1 sau x2==0 sau x3==0) si (X1==0 sau x2==1 sau x3==0)...

x1 ^ x2 ^ x3 ^ x4 =
(X1 + X2 + X3 + X4)*(X1 + X2 + !X3 + !X4)*(X1 + !X2 + X3 + !X4)*(X1 + !X2 + !X3 + X4)*(!X1 + X2 + X3 + !X4)*(!X1 + X2 + !X3 + X4)*(!X1 + !X2 + X3 + X4)*(!X1 + !X2 + !X3 + !X4)

x1 ^ x2 ^ x3 ^ x4 ^ x5 =
(X1 + X2 + X3 + X4 + X5)*(X1 + X2 + X3 + !X4 + !X5)*(X1 + X2 + !X3 + X4 + !X5)*(X1 + X2 + !X3 + !X4 + X5)*(X1 + !X2 + X3 + X4 + !X5)*(X1 + !X2 + X3 + !X4 + X5)*(X1 + !X2 + !X3 + X4 + X5)*(!X1 + X2 + X3 + X4 + !X5)*(!X1 + X2 + X3 + !X4 + X5)*(!X1 + X2 + !X3 + X4 + X5)*(!X1 + !X2 + X3 + X4 + X5)*(X1 + !X2 + !X3 + !X4 + !X5)*(!X1 + X2 + !X3 + !X4 + !X5)*(!X1 + !X2 + X3 + !X4 + !X5)*(!X1 + !X2 + !X3 + X4 + !X5)*(!X1 + !X2 + !X3 + !X4 + X5)

este evident o complicare nu o simplificare.

Referitor la true table: din moment ce avem 50 bits asta inseamna 2 la puterea 50 combinatii, ceea ce este mult prea mult pentru a fi reprezentat!

#5
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,294
  • Înscris: 10.08.2005
Tu vrei sa afisesi tot tabloul ? Si sa dezvolti intreaga formula in AND OR NOR?

#6
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,111
  • Înscris: 24.02.2007
Asa ceva cauti? https://pdfs.semanti...528c6142c53.pdf


#7
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,294
  • Înscris: 10.08.2005
Attached File  POS.png   11.43K   8 downloads

#8
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
@dani.user: Exact. Daca as gasii si ceva implementari ar fi bine.

Am gasit programul din document:
https://github.com/berkeley-abc/abc
din pacate este doar pentru Linux.

Edited by MarianG, 05 January 2020 - 15:24.


#9
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
Am mai gasit niste documente:
http://www.cs.cmu.ed...inimization.pdf

https://www.allabout...xterm-solution/

espresso-ab - tot doar pentru linux,

Simple Solver, dar ar limita de 32 variabile, plus dureaza foarte mult:
https://www.softpedi...le-Solver.shtml

#10
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
https://en.wikipedia...cal_normal_form

https://stackoverflo...0-variables-wit

https://codereview.s...emory-footprint

https://github.com/y...boolean-algebra

Deci in C++ putem stoca un bit ca bit => de 8 ori mai putin decat un byte si decat ce putem face in Java.
Afisarea Truth Table este tot problematica, plus nu stiu inca de viteza de executie.

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,111
  • Înscris: 24.02.2007
Ce ti se cere defapt? Daca e atat de cercetata tema ma gandesc ca nu-i usor/rapid sa obtii un optim.

View PostIvanMihai, on 05 ianuarie 2020 - 20:13, said:

Deci in C++ putem stoca un bit ca bit => de 8 ori mai putin decat un byte si decat ce putem face in Java.
Poti si in java.

#12
MarianG

MarianG

    be that as it may

  • Grup: Moderators
  • Posts: 31,294
  • Înscris: 10.08.2005

View PostIvanMihai, on 05 ianuarie 2020 - 20:13, said:

Afisarea Truth Table este tot problematica, plus nu stiu inca de viteza de executie.
si chiar vrei sa afisezi un tablou de 250 de elemente ?

Edited by MarianG, 05 January 2020 - 21:04.


#13
MihaiProg

MihaiProg

    Member

  • Grup: Members
  • Posts: 345
  • Înscris: 08.02.2016
https://electronics....-convert-an-expression-from-sop-to-pos-and-back-in-boolean-algebra/22766
https://electronics....the-truth-table

Cel mai bine este explicat aici:
https://pediaa.com/w...en-sop-and-pos/

Deci pentru Sum of Products este utilizat Minterms, si trebuie ca expresia sa fie 1 (true)!
in schimb pentru Product of Sums este utilizat Maxterm, si trebuie ca expresia sa fie 0 (false).

Edited by IvanMihai, 06 January 2020 - 21:38.


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate