亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sat_solver.cpp

?? 這是一種非常有用的SAT解析器
?? CPP
字號(hào):
/* =========FOR INTERNAL USE ONLY. NO DISTRIBUTION PLEASE ========== *//********************************************************************* Copyright 2000-2004, Princeton University.  All rights reserved.  By using this software the USER indicates that he or she has read,  understood and will comply with the following: --- Princeton University hereby grants USER nonexclusive permission  to use, copy and/or modify this software for internal, noncommercial, research purposes only. Any distribution, including commercial sale  or license, of this software, copies of the software, its associated  documentation and/or modifications of either is strictly prohibited  without the prior consent of Princeton University.  Title to copyright to this software and its associated documentation shall at all times  remain with Princeton University.  Appropriate copyright notice shall  be placed on all software copies, and a complete copy of this notice  shall be included in all copies of the associated documentation.   No right is  granted to use in advertising, publicity or otherwise  any trademark,  service mark, or the name of Princeton University.  --- This software and any associated documentation is provided "as is"  PRINCETON UNIVERSITY MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS  OR IMPLIED, INCLUDING THOSE OF MERCHANTABILITY OR FITNESS FOR A  PARTICULAR PURPOSE, OR THAT  USE OF THE SOFTWARE, MODIFICATIONS, OR  ASSOCIATED DOCUMENTATION WILL NOT INFRINGE ANY PATENTS, COPYRIGHTS,  TRADEMARKS OR OTHER INTELLECTUAL PROPERTY RIGHTS OF A THIRD PARTY.   Princeton University shall not be liable under any circumstances for  any direct, indirect, special, incidental, or consequential damages  with respect to any claim by USER or any third party on account of  or arising from the use, or inability to use, this software or its  associated documentation, even if Princeton University has been advised of the possibility of those damages.*********************************************************************/#include <iostream>#include <fstream>#include <cstdlib>#include <cstdio>#include <cstring>#include <set>#include <vector>#include <dirent.h>#include "SAT.h"using namespace std;const int MAX_LINE_LENGTH       = 65536;const int MAX_WORD_LENGTH       = 64;//This cnf parser function is based on the GRASP code by Joao Marques Silvavoid read_cnf(SAT_Manager mng, char * filename ){//    cout <<"read cnf "<<endl;    char line_buffer[MAX_LINE_LENGTH];    char word_buffer[MAX_WORD_LENGTH];    set<int> clause_vars;    set<int> clause_lits;    int line_num = 0;        if(opendir(filename)){        cerr << "Can't open input file, it's a directory" << endl;        exit(1);    }        ifstream inp (filename, ios::in);    if (!inp) {        cerr << "Can't open input file" << endl;        exit(1);    }    while (inp.getline(line_buffer, MAX_LINE_LENGTH)) {        ++ line_num;        if (line_buffer[0] == 'c') {             continue;         }        else if (line_buffer[0] == 'p') {            int var_num;            int cl_num;            int arg = sscanf (line_buffer, "p cnf %d %d", &var_num, &cl_num);            if( arg < 2 ) {                cerr << "Unable to read number of variables and clauses"                     << "at line " << line_num << endl;                exit(3);            }            SAT_SetNumVariables(mng, var_num); //first element not used.        }        else {                             // Clause definition or continuation            char *lp = line_buffer;            do {                char *wp = word_buffer;                while (*lp && ((*lp == ' ') || (*lp == '\t'))) {                    lp++;                }                while (*lp && (*lp != ' ') && (*lp != '\t') && (*lp != '\n')) {                    *(wp++) = *(lp++);                }                *wp = '\0';                                 // terminate string                if (strlen(word_buffer) != 0) {     // check if number is there                    int var_idx = atoi (word_buffer);                    int sign = 0;                    if( var_idx != 0) {                        if( var_idx < 0)  { var_idx = -var_idx; sign = 1; }                        clause_vars.insert(var_idx);                        clause_lits.insert( (var_idx << 1) + sign);                    }                             else {                        //add this clause                        if (clause_vars.size() != 0 && (clause_vars.size() == clause_lits.size())) { //yeah, can add this clause                            vector <int> temp;                            for (set<int>::iterator itr = clause_lits.begin();                                 itr != clause_lits.end(); ++itr)                                temp.push_back (*itr);                            SAT_AddClause(mng, & temp.begin()[0], temp.size() );                        }                        else {} //it contain var of both polarity, so is automatically satisfied, just skip it                        clause_lits.clear();                        clause_vars.clear();                    }                }            }            while (*lp);        }    }    if (!inp.eof()) {        cerr << "Input line " << line_num <<  " too long. Unable to continue..." << endl;        exit(2);    }//    assert (clause_vars.size() == 0);         //some benchmark has no 0 in the last clause    if (clause_lits.size() && clause_vars.size()==clause_lits.size() ) {        vector <int> temp;        for (set<int>::iterator itr = clause_lits.begin();             itr != clause_lits.end(); ++itr)            temp.push_back (*itr);        SAT_AddClause(mng, & temp.begin()[0], temp.size() );    }    clause_lits.clear();    clause_vars.clear();//    cout <<"done read cnf"<<endl;}void handle_result(SAT_Manager mng, int outcome, char * filename ){    string result = "UNKNOWN";    switch (outcome) {    case SATISFIABLE:        cout << "Instance Satisfiable" << endl;//following lines will print out a solution if a solution exist        for (int i=1, sz = SAT_NumVariables(mng); i<= sz; ++i) {            switch(SAT_GetVarAsgnment(mng, i)) {            case -1:                        cout <<"("<< i<<")"; break;            case 0:                cout << "-" << i; break;            case 1:                cout << i ; break;            default:                cerr << "Unknown variable value state"<< endl;                exit(4);            }            cout << " ";        }        result  = "SAT";        break;    case UNSATISFIABLE:        result  = "UNSAT";        cout << "Instance Unsatisfiable" << endl;        break;     case TIME_OUT:        result  = "ABORT : TIME OUT";         cout << "Time out, unable to determine the satisfiability of the instance"<<endl;        break;    case MEM_OUT:        result  = "ABORT : MEM OUT";         cout << "Memory out, unable to determine the satisfiability of the instance"<<endl;        break;    default:        cerr << "Unknown outcome" << endl;    }    cout << "Random Seed Used\t\t\t\t" << SAT_Random_Seed(mng) << endl;    cout << "Max Decision Level\t\t\t\t" << SAT_MaxDLevel(mng) << endl;    cout << "Num. of Decisions\t\t\t\t" << SAT_NumDecisions(mng)<< endl;    cout << "( Stack + Vsids + Shrinking Decisions )\t\t" <<SAT_NumDecisionsStackConf(mng);    cout << " + " <<SAT_NumDecisionsVsids(mng)<<" + "<<SAT_NumDecisionsShrinking(mng)<<endl;    cout << "Original Num Variables\t\t\t\t" << SAT_NumVariables(mng) << endl;    cout << "Original Num Clauses\t\t\t\t" << SAT_InitNumClauses(mng) << endl;    cout << "Original Num Literals\t\t\t\t" << SAT_InitNumLiterals(mng) << endl;    cout << "Added Conflict Clauses\t\t\t\t" << SAT_NumAddedClauses(mng)- SAT_InitNumClauses(mng)<< endl;    cout << "Num of Shrinkings\t\t\t\t" << SAT_NumShrinkings(mng)<< endl;    cout << "Deleted Conflict Clauses\t\t\t" << SAT_NumDeletedClauses(mng)-SAT_NumDelOrigCls(mng) <<endl;    cout << "Deleted Clauses\t\t\t\t\t" << SAT_NumDeletedClauses(mng) <<endl;    cout << "Added Conflict Literals\t\t\t\t" << SAT_NumAddedLiterals(mng) - SAT_InitNumLiterals(mng) << endl;    cout << "Deleted (Total) Literals\t\t\t" << SAT_NumDeletedLiterals(mng) <<endl;    cout << "Number of Implication\t\t\t\t" << SAT_NumImplications(mng)<< endl;    //other statistics comes here    cout << "Total Run Time\t\t\t\t\t" << SAT_GetCPUTime(mng) << endl;//    cout << "RESULT:\t" << filename << " " << result << " RunTime: " << SAT_GetCPUTime(mng)<< endl;    cout  << "RESULT:\t"<<result << endl;}void output_status(SAT_Manager mng){    cout << "Dec: " << SAT_NumDecisions(mng)<< "\t ";    cout << "AddCl: " << SAT_NumAddedClauses(mng) <<"\t";    cout << "AddLit: " << SAT_NumAddedLiterals(mng)<<"\t";    cout << "DelCl: " << SAT_NumDeletedClauses(mng) <<"\t";    cout << "DelLit: " << SAT_NumDeletedLiterals(mng)<<"\t";    cout << "NumImp: " << SAT_NumImplications(mng) <<"\t";    cout << "AveBubbleMove: " << SAT_AverageBubbleMove(mng) <<"\t";    //other statistics comes here    cout << "RunTime:" << SAT_GetElapsedCPUTime(mng) << endl;}void verify_solution(SAT_Manager mng){    int num_verified = 0;    for ( int cl_idx = SAT_GetFirstClause (mng); cl_idx >= 0;           cl_idx = SAT_GetNextClause(mng, cl_idx)) {        int len = SAT_GetClauseNumLits(mng, cl_idx);        int * lits = new int[len+1];        SAT_GetClauseLits( mng, cl_idx, lits);        int i;        for (i=0; i< len; ++i) {            int v_idx = lits[i] >> 1;            int sign = lits[i] & 0x1;            int var_value = SAT_GetVarAsgnment( mng, v_idx);            if( (var_value == 1 && sign == 0) ||                (var_value == 0 && sign == 1) ) break;        }        if (i >= len) {            cerr << "Verify Satisfiable solution failed, please file a bug report, thanks. " << endl;            exit(6);        }        delete [] lits;        ++ num_verified;    }    cout <<"c "<< num_verified << " Clauses are true, Verify Solution successful."<<endl;;}int main(int argc, char ** argv){    SAT_Manager mng = SAT_InitManager();    if (argc < 2) {        cerr << "Z-Chaff: Accelerated SAT Solver from Princeton. " << endl;        cerr << "Copyright 2000-2004, Princeton University." << endl << endl;;        cerr << "Usage: "<< argv[0] << " cnf_file [time_limit]" << endl;        return 2;    }    cout << "Z-Chaff Version: " << SAT_Version(mng) << endl;    cout << "Solving " << argv[1] << " ......" << endl;    if (argc == 2) {        read_cnf (mng, argv[1] );    }    else {        read_cnf (mng, argv[1] );        SAT_SetTimeLimit(mng, atoi(argv[2]));    }/* if you want some statistics during the solving, uncomment following line *///    SAT_AddHookFun(mng,output_status, 5000);/* you can set all your parameters here, following values are the defaults*/ //    SAT_SetMaxUnrelevance(mng, 20);//    SAT_SetMinClsLenForDelete(mng, 100);//    SAT_SetMaxConfClsLenAllowed(mng, 5000);/* randomness may help sometimes, by default, there is no randomness *///    SAT_SetRandomness (mng, 10);//    SAT_SetRandSeed (mng, -1);    int result = SAT_Solve(mng);    if (result == SATISFIABLE)         verify_solution(mng);    handle_result (mng, result,  argv[1]);    return 0;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美夫妻性生活| 午夜精品免费在线| 国产亚洲一区二区三区在线观看 | 日韩你懂的在线播放| 欧美精品一二三四| 8x8x8国产精品| 在线播放91灌醉迷j高跟美女| 欧美日韩中文字幕一区| 日本高清视频一区二区| 91黄色免费网站| 欧美日韩一级二级| 欧美日韩免费一区二区三区视频| 欧美日韩一区二区三区不卡| 欧美日韩视频不卡| 日韩一区国产二区欧美三区| 日韩女优制服丝袜电影| 精品久久国产老人久久综合| 国产婷婷色一区二区三区四区 | 国产精品久久久久久久午夜片| 中文字幕亚洲区| 亚洲柠檬福利资源导航| 亚洲国产va精品久久久不卡综合| 天堂成人免费av电影一区| 日韩avvvv在线播放| 久久99久久99小草精品免视看| 看片的网站亚洲| 豆国产96在线|亚洲| 91色婷婷久久久久合中文| 在线亚洲欧美专区二区| 91精品一区二区三区在线观看| 日韩免费一区二区三区在线播放| 久久久精品国产免大香伊| 国产精品人人做人人爽人人添| 亚洲色图色小说| 肉色丝袜一区二区| 国产在线视频一区二区三区| av电影天堂一区二区在线观看| 在线视频一区二区三| 日韩欧美不卡一区| 国产精品妹子av| 午夜精品一区二区三区三上悠亚| 国内精品伊人久久久久av一坑| 99久久99久久精品免费观看 | 欧美色成人综合| 日韩午夜在线观看视频| 日本一区二区三区久久久久久久久不| 亚洲天堂网中文字| 日本vs亚洲vs韩国一区三区二区| 国产精品91xxx| 欧美日韩另类一区| 久久综合九色综合久久久精品综合| 亚洲视频一区在线| 麻豆精品在线观看| 色综合欧美在线| 26uuu精品一区二区| 亚洲女人****多毛耸耸8| 麻豆精品精品国产自在97香蕉| 成人黄色一级视频| 欧美一区二区三区日韩| 综合久久国产九一剧情麻豆| 麻豆精品久久精品色综合| 99国产麻豆精品| 精品日产卡一卡二卡麻豆| 亚洲靠逼com| 国产精品一区二区91| 欧美另类久久久品| 亚洲色欲色欲www在线观看| 国产综合久久久久久久久久久久| 欧美影院一区二区| 国产精品美女久久久久久2018| 丝瓜av网站精品一区二区| 99精品久久只有精品| 精品av久久707| 日韩精品每日更新| 91丝袜国产在线播放| 国产午夜三级一区二区三| 日韩制服丝袜av| 色噜噜夜夜夜综合网| 中文字幕国产一区| 精品一区二区三区蜜桃| 欧美一卡在线观看| 亚洲一区二区三区美女| fc2成人免费人成在线观看播放| 精品国产凹凸成av人网站| 三级欧美韩日大片在线看| 在线看不卡av| 亚洲欧美偷拍三级| 26uuu久久天堂性欧美| 视频一区二区国产| 欧美日韩免费高清一区色橹橹| 亚洲三级免费观看| a级精品国产片在线观看| 久久久久高清精品| 国产真实乱偷精品视频免| 欧美成va人片在线观看| 免费成人av在线| 91麻豆精品国产91久久久 | 国产精品毛片久久久久久久| 国产精品亚洲成人| 2023国产精品自拍| 国产在线精品一区二区不卡了 | 91丝袜美腿高跟国产极品老师| 国产精品视频线看| 成人一区二区三区视频在线观看 | 天堂久久久久va久久久久| 在线观看91视频| 亚洲韩国一区二区三区| 日本乱码高清不卡字幕| 亚洲一区二区三区四区五区中文 | 91麻豆精品国产91久久久更新时间 | 国产不卡高清在线观看视频| 久久久亚洲欧洲日产国码αv| 黑人精品欧美一区二区蜜桃| 2017欧美狠狠色| 国产成人午夜精品影院观看视频 | 欧美日本国产视频| 日韩成人午夜精品| 欧美电视剧在线观看完整版| 麻豆91在线播放| 精品久久人人做人人爱| 国产在线一区观看| 国产精品久久久久四虎| 91丨porny丨在线| 亚洲高清不卡在线观看| 91精选在线观看| 国产精品中文字幕欧美| 国产精品久久久久一区二区三区共| 99久久精品免费观看| 亚洲国产精品久久久久秋霞影院 | 午夜激情综合网| 日韩色视频在线观看| 国产精品538一区二区在线| 国产精品黄色在线观看| 欧美性感一类影片在线播放| 免费成人深夜小野草| 国产欧美日产一区| 日本道色综合久久| 蜜桃av一区二区在线观看| 国产日韩欧美a| 色天天综合色天天久久| 琪琪久久久久日韩精品| 欧美—级在线免费片| 欧美私模裸体表演在线观看| 久久国产三级精品| 亚洲日本一区二区| 欧美一区二区免费观在线| 东方aⅴ免费观看久久av| 亚洲一区二区三区四区在线观看| 精品剧情在线观看| 91在线小视频| 秋霞电影一区二区| 中文字幕一区二区三区av| 欧美精品久久99久久在免费线 | 另类小说视频一区二区| 国产精品久久久一区麻豆最新章节| 欧美三级在线看| 国产成人免费视频| 婷婷综合另类小说色区| 国产亚洲成av人在线观看导航| 欧美在线制服丝袜| 国产精品 日产精品 欧美精品| 亚洲自拍偷拍图区| 久久久久99精品国产片| 欧美午夜电影在线播放| 国产成人在线色| 日本麻豆一区二区三区视频| 中文字幕永久在线不卡| 日韩美女视频在线| 欧洲精品一区二区| 国产成人精品综合在线观看| 日韩激情一二三区| 亚洲婷婷在线视频| 国产色婷婷亚洲99精品小说| 欧美日本国产视频| 91免费观看国产| 国产伦精品一区二区三区免费迷| 亚洲成a人片在线不卡一二三区| 中文在线免费一区三区高中清不卡| 欧美丰满嫩嫩电影| 99久久精品免费精品国产| 国产一区二区导航在线播放| 五月婷婷激情综合| 亚洲精品乱码久久久久久日本蜜臀| 久久久久久久久久看片| 5月丁香婷婷综合| 在线日韩av片| 97精品超碰一区二区三区| 国产一区欧美二区| 日本aⅴ免费视频一区二区三区 | 不卡一卡二卡三乱码免费网站| 久久91精品久久久久久秒播| 亚洲成av人片在线观看| 亚洲欧美韩国综合色| 国产精品私人自拍| 久久久三级国产网站| 欧美videos中文字幕| 日韩一级在线观看| 在线不卡a资源高清| 欧美日韩国产另类一区| 欧美中文字幕不卡|