CN115334019B - Data processing method and programmable switch for handling SAT problem by programmable switch - Google Patents
Data processing method and programmable switch for handling SAT problem by programmable switch Download PDFInfo
- Publication number
- CN115334019B CN115334019B CN202210928481.7A CN202210928481A CN115334019B CN 115334019 B CN115334019 B CN 115334019B CN 202210928481 A CN202210928481 A CN 202210928481A CN 115334019 B CN115334019 B CN 115334019B
- Authority
- CN
- China
- Prior art keywords
- sat
- conflict
- variables
- variable
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 23
- 238000012545 processing Methods 0.000 claims description 29
- 238000000034 method Methods 0.000 claims description 23
- 238000007781 pre-processing Methods 0.000 claims description 4
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 15
- 238000013461 design Methods 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 239000000463 material Substances 0.000 description 4
- 238000011156 evaluation Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- BQCADISMDOOEFD-UHFFFAOYSA-N Silver Chemical compound [Ag] BQCADISMDOOEFD-UHFFFAOYSA-N 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 238000000691 measurement method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 229910052709 silver Inorganic materials 0.000 description 2
- 239000004332 silver Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/20—Support for services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90339—Query processing by using parallel associative memories or content-addressable memories
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
- G06N5/041—Abduction
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Evolutionary Computation (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Artificial Intelligence (AREA)
- Electronic Switches (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本公开提供一种可编程交换机处理SAT问题的数据处理方法,包括:可编程交换机接收服务器预处理后的SAT公式数据;可编程交换机接收服务器发送的求解指令;可编程交换机对SAT问题求解;可编程交换机将SAT问题求解结果发送至服务器。本公开还提供一种可编程交换机。
The present disclosure provides a data processing method for a programmable switch to handle SAT problems, which includes: the programmable switch receives SAT formula data preprocessed by the server; the programmable switch receives solving instructions sent by the server; the programmable switch solves the SAT problem; The programming switch sends the SAT problem solving results to the server. The present disclosure also provides a programmable switch.
Description
技术领域Technical field
本公开涉及计算机数据处理技术领域,本公开尤其涉及一种可编程交换机处理SAT问题的数据处理方法及可编程交换机。The present disclosure relates to the technical field of computer data processing, and in particular, the present disclosure relates to a data processing method and a programmable switch for processing SAT problems by a programmable switch.
背景技术Background technique
布尔可满足性问题,即Boolean satisfiability problem,简称SAT问题,是确定是否存在满足给定布尔公式的解释的问题。换句话说,它询问给定布尔公式的变量是否可以通过被赋值为真或假的方式使公式计算结果为真。如果可以,则该公式是可满足的。否则,对于给定的布尔公式而言,该公式是不可满足的。SAT问题源于数理逻辑中经典命题逻辑关于公式的可满足性的概念,是计算机科学中一个核心的问题,也是第一个被证明是NP完全的问题。它在计算机科学、电路设计、复杂性理论、密码学和人工智能的许多领域中都十分重要。The Boolean satisfiability problem, or SAT problem for short, is the problem of determining whether there is an explanation that satisfies a given Boolean formula. In other words, it asks whether the variables of a given Boolean formula can be assigned a value of true or false in such a way that the formula evaluates to true. If it can, then the formula is satisfiable. Otherwise, for a given Boolean formula, the formula is unsatisfiable. The SAT problem originates from the concept of satisfiability of formulas in classical propositional logic in mathematical logic. It is a core problem in computer science and the first problem proven to be NP-complete. It is important in many areas of computer science, circuit design, complexity theory, cryptography, and artificial intelligence.
目前,解决SAT问题的方法主要分为完备方法和不完备方法两大类。不完备方法,只能判断出部分可满足的合取范式或判断部分不可满足的合取范式,例如局部搜索就无法证明一个合取范式CNF是不可满足的。而完备方法,即对于任何CNF都能证明它是满足的或是不满足的。对于完备的SAT求解算法,常用的算法有DPLL算法和CDCL算法两种。早期的SAT问题求解主要是基于DPLL算法进行的,它是解决SAT问题的基本算法,后来的研究大部分都是基于DPLL算法进行的;CDCL(冲突驱动的子句学习)算法是现代SAT求解器常用的求解算法,该算法是在DPLL算法的基础之上,通过有效的冲突分析、子句学习、非时间顺序回溯(又名回跳)以及“双重观察文字”单元来增强基本DPLL搜索算法。At present, methods for solving SAT problems are mainly divided into two categories: complete methods and incomplete methods. Incomplete methods can only judge partially satisfiable conjunctive normal forms or judge partially unsatisfiable conjunctive normal forms. For example, local search cannot prove that a conjunctive normal form CNF is unsatisfiable. The complete method can prove that any CNF is satisfied or unsatisfied. For complete SAT solving algorithms, two commonly used algorithms are DPLL algorithm and CDCL algorithm. Early SAT problem solving was mainly based on the DPLL algorithm, which is the basic algorithm for solving SAT problems. Most of the later research was based on the DPLL algorithm; the CDCL (conflict-driven clause learning) algorithm is a modern SAT solver. A commonly used solving algorithm, this algorithm is based on the DPLL algorithm and enhances the basic DPLL search algorithm through effective conflict analysis, clause learning, non-chronological backtracking (aka jumpback), and "double observation text" units.
处理SAT问题的耗时主要集中在判断给定变量的赋值是否会导致公式的冲突(即公式的真值为假),它的时间复杂度是O(m*n),其中m表示子句个数,n表示每个子句的平均变量个数。提高SAT问题的处理速度、提高处理效率是亟需解决的技术问题。The time-consuming process of processing SAT problems is mainly focused on determining whether the assignment of a given variable will cause a conflict in the formula (that is, the true value of the formula is false). Its time complexity is O(m*n), where m represents the number of clauses. number, n represents the average number of variables in each clause. Improving the processing speed and efficiency of SAT problems are technical issues that need to be solved urgently.
发明内容Contents of the invention
为了解决上述技术问题中的至少一个,本公开提供了一种可编程交换机(Programming Protocol-independent Packet Processors)处理SAT问题的数据处理方法及可编程交换机。In order to solve at least one of the above technical problems, the present disclosure provides a data processing method and a programmable switch for processing SAT problems in programmable switches (Programming Protocol-independent Packet Processors).
根据本公开的一个方面,提供一种可编程交换机处理SAT问题的数据处理方法,包括:According to one aspect of the present disclosure, a data processing method for a programmable switch to handle SAT problems is provided, including:
可编程交换机接收服务器预处理后的SAT公式数据;The programmable switch receives the SAT formula data preprocessed by the server;
可编程交换机接收服务器发送的求解指令;The programmable switch receives the solution instructions sent by the server;
可编程交换机对SAT问题求解;Programmable switches solve SAT problems;
可编程交换机将SAT问题求解结果发送至服务器。The programmable switch sends the SAT problem solving results to the server.
根据本公开的至少一个实施方式的数据处理方法,所述预处理包括:将SAT公式数据划分为多个子句;According to the data processing method of at least one embodiment of the present disclosure, the preprocessing includes: dividing SAT formula data into multiple clauses;
可编程交换机接收服务器预处理后的SAT公式数据,包括:可编程交换机将所述多个子句放入不同的冲突表中。The programmable switch receives the SAT formula data preprocessed by the server, including: the programmable switch puts the multiple clauses into different conflict tables.
根据本公开的至少一个实施方式的数据处理方法,所述求解指令以数据包形式发送,所述数据包包括求解SAT的控制信息,所述控制信息以包头的形式进行封装,所述包头包括:According to the data processing method of at least one embodiment of the present disclosure, the solving instructions are sent in the form of data packets, the data packets include control information for solving SAT, and the control information is encapsulated in the form of a packet header, and the packet header includes:
网络类型字段,所述网络类型字段用于标识SAT求解方法适用的网络类型;A network type field, which is used to identify the network type to which the SAT solution method is applicable;
搜索字段,所述搜索字段包括可赋值变量搜索、堆栈操作及单元表匹配在内的控制信息;Search field, the search field includes control information including assignable variable search, stack operation and unit table matching;
多个判断字段,各个判断字段包括所述冲突表的信息及冲突处理函数、所述单元表的信息及单元处理函数。A plurality of judgment fields, each judgment field includes the information of the conflict table and the conflict processing function, the information of the unit table and the unit processing function.
根据本公开的至少一个实施方式的数据处理方法,可编程交换机对SAT问题求解,包括:According to the data processing method of at least one embodiment of the present disclosure, the programmable switch solves the SAT problem, including:
搜索SAT公式数据中可赋值的变量,并为SAT公式数据的子句的变量赋值;Search for assignable variables in the SAT formula data and assign values to the variables in the clauses of the SAT formula data;
将赋值后变量压入堆栈;Push the assigned variable onto the stack;
将赋值后变量发送至冲突表,并通过冲突表判断变量赋值后是否有冲突,如果有冲突,则通过回溯所述堆栈并重新对所述可赋值的变量赋值,如果没有冲突,则进行单元表的匹配;Send the variables after assignment to the conflict table, and use the conflict table to determine whether there is a conflict after the variable assignment. If there is a conflict, go back to the stack and reassign the assignable variable. If there is no conflict, proceed to the unit table. match;
基于单元表的匹配结果判断是否生成单元变量,如果生成单元变量,则对单元变量赋值,如果没有生成单元变量,则搜索SAT公式数据的子句中其他可赋值的变量。Determine whether to generate unit variables based on the matching results of the unit table. If unit variables are generated, assign values to the unit variables. If no unit variables are generated, search for other assignable variables in the clauses of the SAT formula data.
根据本公开的至少一个实施方式的数据处理方法,通过冲突表判断变量赋值后是否有冲突,包括:According to the data processing method of at least one embodiment of the present disclosure, determining whether there is a conflict after variable assignment through a conflict table includes:
对SAT公式数据的子句的各个变量逐一赋值的同时,通过冲突表的赋值字段判断子句的各个变量是否均已完成赋值;While assigning values to each variable in the clause of the SAT formula data one by one, determine whether each variable in the clause has been assigned a value through the assignment field of the conflict table;
在SAT公式数据的子句中的各个变量赋值均已经完成的情况下,判断对所述SAT公式数据的子句的赋值是否引起冲突;When the assignment of each variable in the clause of the SAT formula data has been completed, determine whether the assignment of values to the clause of the SAT formula data causes a conflict;
如果引起冲突,则通过所述冲突表的冲突处理函数进行冲突处理。If a conflict occurs, the conflict is handled through the conflict handling function of the conflict table.
根据本公开的至少一个实施方式的数据处理方法,通过冲突表的赋值字段判断所述子句的各个变量是否均已完成赋值,包括:According to the data processing method of at least one embodiment of the present disclosure, determining whether each variable of the clause has been assigned a value through the assignment field of the conflict table includes:
将赋值字段初始化为未赋值状态信息;Initialize assigned fields to unassigned status information;
对各个变量赋值后,将所述变量对应的赋值字段修改为已赋值状态信息;After assigning a value to each variable, modify the assignment field corresponding to the variable to the assigned status information;
如果所述子句变量的对应的赋值字段均已修改为已赋值状态时,则判定所述子句的各个变量均已赋值完成。If the corresponding assignment fields of the clause variables have been modified to the assigned state, it is determined that each variable of the clause has been assigned a value.
根据本公开的至少一个实施方式的数据处理方法,判断是否生成单元变量,包括:According to the data processing method of at least one embodiment of the present disclosure, determining whether to generate unit variables includes:
当所述子句的各个变量被赋值至只剩一个没有赋值时,则判断所述只剩的一个没有赋值的变量为单元变量。When each variable in the clause is assigned until only one variable remains unassigned, it is determined that the only remaining unassigned variable is a unit variable.
根据本公开的至少一个实施方式的数据处理方法,回溯堆栈以查找可赋值变量通过指针进行,所述指针确保当前指向的变量及通过指针与当前变量直接或间接链接的变量均已完成赋值,以减少对可赋值变量搜索的时间。According to the data processing method of at least one embodiment of the present disclosure, backtracking the stack to find assignable variables is performed through a pointer, and the pointer ensures that the variable currently pointed to and the variables directly or indirectly linked to the current variable through the pointer have completed assignment, so as to Reduce search time for assignable variables.
根据本公开的又一个方面,提供一种可编程交换机,包括:According to yet another aspect of the present disclosure, a programmable switch is provided, including:
SAT公式数据接收模块,所述SAT公式数据接收模块用于接收服务器预处理后的SAT公式数据;SAT formula data receiving module, the SAT formula data receiving module is used to receive SAT formula data preprocessed by the server;
求解指令处理模块,所述求解指令处理模块用于接收服务器发送的求解指令;A solution instruction processing module, which is used to receive the solution instructions sent by the server;
SAT问题求解模块,所述SAT问题求解模块用于对SAT问题求解;SAT problem solving module, the SAT problem solving module is used to solve SAT problems;
结果发送模块,所述结果发送模块用于将SAT问题求解结果发送至服务器。The result sending module is used to send the SAT problem solving results to the server.
根据本公开至少一个实施方式的可编程交换机,所述SAT问题求解模块包括:According to the programmable switch of at least one embodiment of the present disclosure, the SAT problem solving module includes:
搜索组件,所述搜索组件用于搜索可赋值的变量并为变量赋值;A search component, which is used to search for assignable variables and assign values to the variables;
判断组件,所述判断组件判断赋值是否会引起冲突以及是否有单元变量;A judgment component that judges whether the assignment will cause conflicts and whether there are unit variables;
其中,所述搜索组件通过由寄存器及SRAM形成的堆栈构成,所述搜索组件包括:Wherein, the search component is composed of a stack formed by registers and SRAM, and the search component includes:
搜索模块,所述搜索模块通过遍历所有变量以确定可赋值的变量,将所述可赋值的变量赋值以作为冲突表的输入;A search module, which determines assignable variables by traversing all variables, and assigns values to the assignable variables as input to the conflict table;
回退模块,所述回退模块基于所述冲突表匹配结果,通过回溯堆栈重新搜索可赋值的变量;A rollback module that re-searches assignable variables through the backtrace stack based on the conflict table matching results;
单元模块,所述单元模块基于单元表的判断结果,在有单元变量的情况下发送通知给搜索模块并单元变量赋值;The unit module, based on the judgment result of the unit table, sends a notification to the search module and assigns values to the unit variables if there are unit variables;
其中,所述判断组件包括冲突表和单元表,基于所述冲突表判断对SAT公式数据子句的变量赋值是否会引起冲突,基于所述单元表判断是否有单元变量。Wherein, the judgment component includes a conflict table and a unit table. It is judged based on the conflict table whether the variable assignment to the SAT formula data clause will cause a conflict, and it is judged whether there is a unit variable based on the unit table.
附图说明Description of the drawings
附图示出了本公开的示例性实施方式,并与其说明一起用于解释本公开的原理,其中包括了这些附图以提供对本公开的进一步理解,并且附图包括在本说明书中并构成本说明书的一部分。The accompanying drawings illustrate exemplary embodiments of the disclosure and together with the description serve to explain the principles of the disclosure, and are included to provide a further understanding of the disclosure, and are incorporated in and constitute part of this specification. part of the instruction manual.
图1是本公开的一个实施方式的可编程交换机处理SAT问题的数据处理方法的流程示意图。Figure 1 is a schematic flowchart of a data processing method for a programmable switch to handle SAT issues according to an embodiment of the present disclosure.
图2是本公开的一个实施方式的可编程交换机的架构示意图。Figure 2 is an architectural schematic diagram of a programmable switch according to an embodiment of the present disclosure.
图3是本公开的一个实施方式的可编程交换机的包头的示意图。Figure 3 is a schematic diagram of a packet header of a programmable switch according to an embodiment of the present disclosure.
图4是现有技术的冲突表的示意图。Figure 4 is a schematic diagram of a conflict table in the prior art.
图5是本公开的一个实施方式的添加赋值字段的冲突表的示意图。Figure 5 is a schematic diagram of a conflict table adding an assignment field according to an embodiment of the present disclosure.
图6是本公开的一个实施方式的判断组件包头结构的示意图。Figure 6 is a schematic diagram of the header structure of the judgment component according to an embodiment of the present disclosure.
图7是本公开的一个实施方式的公式划分方法的示意图。Figure 7 is a schematic diagram of a formula dividing method according to an embodiment of the present disclosure.
图8是本公开的一个实施方式的单元表的结构示意图。FIG. 8 is a schematic structural diagram of a unit table according to an embodiment of the present disclosure.
图9是本公开的一个实施方式的搜索组件包头结构的示意图。Figure 9 is a schematic diagram of the header structure of a search component according to an embodiment of the present disclosure.
图10是本公开的一个实施方式的堆栈操作示意图。Figure 10 is a schematic diagram of stack operation according to an embodiment of the present disclosure.
图11是本公开的一个实施方式的搜索组件操作示意图。Figure 11 is a schematic diagram of the operation of the search component according to an embodiment of the present disclosure.
图12是本公开的一个实施方式的可编程交换机(P4-DPLL)性能评估结果示意图。Figure 12 is a schematic diagram of performance evaluation results of a programmable switch (P4-DPLL) according to an embodiment of the present disclosure.
具体实施方式Detailed ways
下面结合附图和实施方式对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施方式仅用于解释相关内容,而非对本公开的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本公开相关的部分。The present disclosure will be described in further detail below in conjunction with the accompanying drawings and embodiments. It can be understood that the specific implementations described here are only used to explain the relevant content, but are not intended to limit the present disclosure. It should also be noted that, for convenience of description, only parts related to the present disclosure are shown in the drawings.
需要说明的是,在不冲突的情况下,本公开中的实施方式及实施方式中的特征可以相互组合。下面将参考附图并结合实施方式来详细说明本公开的技术方案。It should be noted that, as long as there is no conflict, the embodiments and features in the embodiments of the present disclosure can be combined with each other. The technical solutions of the present disclosure will be described in detail below with reference to the accompanying drawings and embodiments.
除非另有说明,否则示出的示例性实施方式/实施例将被理解为提供可以在实践中实施本公开的技术构思的一些方式的各种细节的示例性特征。因此,除非另有说明,否则在不脱离本公开的技术构思的情况下,各种实施方式/实施例的特征可以另外地组合、分离、互换和/或重新布置。Unless otherwise specified, the illustrated exemplary embodiments/examples are to be understood as exemplary features providing various details of some manner in which the technical concepts of the present disclosure may be implemented in practice. Therefore, unless otherwise stated, features of various embodiments/embodiments may be additionally combined, separated, interchanged and/or rearranged without departing from the technical concept of the present disclosure.
在附图中使用交叉影线和/或阴影通常用于使相邻部件之间的边界变得清晰。如此,除非说明,否则交叉影线或阴影的存在与否均不传达或表示对部件的具体材料、材料性质、尺寸、比例、示出的部件之间的共性和/或部件的任何其它特性、属性、性质等的任何偏好或者要求。此外,在附图中,为了清楚和/或描述性的目的,可以夸大部件的尺寸和相对尺寸。当可以不同地实施示例性实施例时,可以以不同于所描述的顺序来执行具体的工艺顺序。例如,可以基本同时执行或者以与所描述的顺序相反的顺序执行两个连续描述的工艺。此外,同样的附图标记表示同样的部件。The use of cross-hatching and/or shading in drawings is often used to make boundaries between adjacent parts clear. As such, unless stated otherwise, the presence or absence of cross-hatching or shading does not convey or indicate any knowledge of the specific materials, material properties, dimensions, proportions, commonalities between the components shown and/or any other characteristics of the components, Any preferences or requirements for attributes, properties, etc. Furthermore, in the drawings, the size and relative sizes of components may be exaggerated for clarity and/or descriptive purposes. While example embodiments may be implemented differently, a specific process sequence may be performed in a different order than that described. For example, two consecutively described processes may be performed substantially concurrently or in the reverse order of that described. In addition, the same reference numerals represent the same components.
当一个部件被称作“在”另一部件“上”或“之上”、“连接到”或“结合到”另一部件时,该部件可以直接在所述另一部件上、直接连接到或直接结合到所述另一部件,或者可以存在中间部件。然而,当部件被称作“直接在”另一部件“上”、“直接连接到”或“直接结合到”另一部件时,不存在中间部件。为此,术语“连接”可以指物理连接、电气连接等,并且具有或不具有中间部件。When an element is referred to as being "on," "on," "connected to" or "coupled to" another element, it can be directly on, directly connected to, or directly connected to the other element. Either directly coupled to said other component, or intervening components may be present. However, when an element is referred to as being "directly on," "directly connected to" or "directly coupled to" another element, there are no intervening elements present. For this purpose, the term "connected" may refer to a physical connection, an electrical connection, etc., with or without intervening components.
本文使用的术语是为了描述具体实施例的目的,而不意图是限制性的。如这里所使用的,除非上下文另外清楚地指出,否则单数形式“一个(种、者)”和“所述(该)”也意图包括复数形式。此外,当在本说明书中使用术语“包含”和/或“包括”以及它们的变型时,说明存在所陈述的特征、整体、步骤、操作、部件、组件和/或它们的组,但不排除存在或附加一个或更多个其它特征、整体、步骤、操作、部件、组件和/或它们的组。还要注意的是,如这里使用的,术语“基本上”、“大约”和其它类似的术语被用作近似术语而不用作程度术语,如此,它们被用来解释本领域普通技术人员将认识到的测量值、计算值和/或提供的值的固有偏差。The terminology used herein is for the purpose of describing particular embodiments and is not intended to be limiting. As used herein, the singular forms "a," "an," and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. Furthermore, when the terms "comprises" and/or "includes" and variations thereof are used in this specification, it is stated that the stated features, integers, steps, operations, parts, components and/or groups thereof are present but not excluded. One or more other features, integers, steps, operations, parts, components and/or groups thereof are present or appended. It is also noted that, as used herein, the terms "substantially," "approximately," and other similar terms are used as terms of approximation and not as terms of degree, and as such, they are used to explain what one of ordinary skill in the art would recognize. Inherent deviations from measured, calculated and/or supplied values.
图1是本公开的一个实施方式的可编程交换机处理SAT问题的数据处理方法的流程示意图。Figure 1 is a schematic flowchart of a data processing method for a programmable switch to handle SAT issues according to an embodiment of the present disclosure.
如图1所示,可编程交换机处理SAT问题的数据处理方法,包括:As shown in Figure 1, the data processing method of programmable switches to deal with SAT problems includes:
S102、可编程交换机接收服务器预处理后的SAT公式数据;S102. The programmable switch receives the SAT formula data preprocessed by the server;
S104、可编程交换机接收服务器发送的求解指令;S104. The programmable switch receives the solution instruction sent by the server;
S106、可编程交换机对SAT问题求解;S106, programmable switch solves SAT problem;
S108、可编程交换机将SAT问题求解结果发送至服务器。S108. The programmable switch sends the SAT problem solving results to the server.
其中,服务器预处理SAT公式数据,包括:将SAT公式数据将所划分为多个子句。Among them, the server preprocesses the SAT formula data, including: dividing the SAT formula data into multiple clauses.
本公开中,可编程交换机将多个子句放入不同的冲突表中。In this disclosure, the programmable switch places multiple clauses into different conflict tables.
S104中,求解指令以数据包形式发送,数据包包括求解SAT的控制信息,控制信息以包头的形式进行封装,包头包括:In S104, the solution instructions are sent in the form of data packets. The data packets include control information for solving SAT. The control information is encapsulated in the form of a packet header. The packet header includes:
网络类型字段,网络类型字段用于标识SAT求解方法适用的网络类型;Network type field. The network type field is used to identify the network type for which the SAT solution method is applicable;
搜索字段,搜索字段包括可赋值变量搜索、堆栈操作及单元表匹配在内的控制信息;Search field, the search field includes control information including assignable variable search, stack operation and unit table matching;
多个判断字段,各个判断字段包括冲突表的信息及冲突处理函数、单元表的信息及单元处理函数。Multiple judgment fields, each judgment field includes conflict table information and conflict processing functions, unit table information and unit processing functions.
上述S106,可编程交换机对SAT问题求解,包括:The above-mentioned S106, programmable switch solves SAT problems, including:
搜索SAT公式数据中可赋值的变量,并为SAT公式数据的子句的变量赋值;Search for assignable variables in the SAT formula data and assign values to the variables in the clauses of the SAT formula data;
将赋值后变量压入堆栈;Push the assigned variable onto the stack;
将赋值后的变量发送至冲突表,并通过冲突表判断变量赋值后是否有冲突,如果有冲突,则通过回溯堆栈并重新对可赋值的变量赋值,如果没有冲突,则进行单元表的匹配;Send the assigned variables to the conflict table, and use the conflict table to determine whether there is a conflict after the variable assignment. If there is a conflict, retrace the stack and re-assign the assignable variables. If there is no conflict, match the unit table;
基于单元表的匹配结果判断是否会生成单元变量,如果生成单元变量,则对单元变量赋值,如果没有生成单元变量,则搜索SAT公式数据的子句中其他可赋值的变量。Determine whether the unit variable will be generated based on the matching result of the unit table. If the unit variable is generated, assign a value to the unit variable. If the unit variable is not generated, search for other assignable variables in the clauses of the SAT formula data.
其中,通过冲突表判断变量赋值后是否有冲突,包括:Among them, the conflict table is used to determine whether there is a conflict after variable assignment, including:
对SAT公式数据的子句的各个变量逐一赋值的同时,通过冲突表的赋值字段判断子句的各个变量是否均已完成赋值;While assigning values to each variable in the clause of the SAT formula data one by one, determine whether each variable in the clause has been assigned a value through the assignment field of the conflict table;
在SAT公式数据的子句中的各个变量赋值均已经完成的情况下,判断对SAT公式数据的子句的赋值是否引起冲突;When the assignment of each variable in the clause of SAT formula data has been completed, determine whether the assignment of values to the clause of SAT formula data causes a conflict;
如果引起冲突,则通过冲突表的冲突处理函数进行冲突处理。If a conflict occurs, the conflict is handled through the conflict handling function of the conflict table.
其中,通过冲突表的赋值字段判断子句的各个变量是否均已完成赋值,包括:Among them, the assignment field of the conflict table is used to determine whether each variable of the clause has been assigned, including:
将赋值字段初始化为未赋值状态信息;Initialize assigned fields to unassigned status information;
对各个变量赋值后,将变量对应的赋值字段修改为已赋值状态信息;After assigning a value to each variable, modify the assignment field corresponding to the variable to the assigned status information;
如果子句变量的对应的赋值字段均已修改为已赋值状态时,则判定子句的各个变量均已赋值完成。If the corresponding assignment fields of the clause variables have been modified to the assigned state, then each variable in the judgment clause has been assigned a value.
其中,判断是否会生成单元变量,包括:Among them, it is judged whether unit variables will be generated, including:
当子句的各个变量被赋值至只剩一个没有赋值时,则判断只剩的一个没有赋值的变量为单元变量。When each variable in the clause is assigned until only one variable remains unassigned, the remaining unassigned variable is judged to be a unit variable.
其中,回溯堆栈查找可赋值变量通过指针进行,指针确保当前指向的变量及通过指针与当前变量直接或间接链接的变量均已完成赋值,以减少对可赋值变量搜索的时间。Among them, the backtrace stack search for assignable variables is carried out through pointers. The pointers ensure that the variables currently pointed to and the variables directly or indirectly linked to the current variable through the pointer have been assigned, so as to reduce the time of searching for assignable variables.
根据本公开的又一个方面,提供一种可编程交换机,包括:According to yet another aspect of the present disclosure, a programmable switch is provided, including:
SAT公式数据接收模块,SAT公式数据接收模块用于接收服务器预处理后的SAT公式数据;SAT formula data receiving module. The SAT formula data receiving module is used to receive SAT formula data preprocessed by the server;
求解指令处理模块,求解指令处理模块用于接收服务器发送的求解指令;The solution instruction processing module is used to receive the solution instructions sent by the server;
SAT问题求解模块,SAT问题求解模块用于对SAT问题求解;SAT problem solving module, the SAT problem solving module is used to solve SAT problems;
结果发送模块,结果发送模块用于使可编程交换机将SAT问题求解结果发送至服务器。The result sending module is used to enable the programmable switch to send the SAT problem solving results to the server.
根据本公开至少一个实施方式的可编程交换机,SAT问题求解模块包括:According to the programmable switch of at least one embodiment of the present disclosure, the SAT problem solving module includes:
搜索组件,搜索组件用于搜索可赋值的变量并为变量赋值;Search component, the search component is used to search for assignable variables and assign values to variables;
判断组件,判断组件判断赋值是否会引起冲突以及是否有单元变量;Judgment component, the judgment component determines whether the assignment will cause conflicts and whether there are unit variables;
其中,搜索组件通过由寄存器及SRAM形成的堆栈构成,搜索组件包括:Among them, the search component is composed of a stack formed by registers and SRAM. The search component includes:
搜索模块,搜索模块通过遍历所有变量以确定可赋值的变量,将可赋值的变量赋值以作为冲突表的输入;Search module, the search module determines assignable variables by traversing all variables, and assigns assignable variables as input to the conflict table;
回退模块,回退模块基于冲突表匹配结果,通过回溯堆栈重新搜索可赋值的变量;Rollback module, the rollback module re-searches assignable variables through the backtrace stack based on the conflict table matching results;
单元模块,单元模块基于单元表的判断结果,在有单元变量的情况下发送通知给搜索模块并单元变量赋值;The unit module, based on the judgment result of the unit table, sends a notification to the search module and assigns values to the unit variables if there are unit variables;
其中,判断组件包括冲突表和单元表,基于冲突表判断对SAT公式数据子句的变量赋值是否会引起冲突,基于单元表判断是否有单元变量。Among them, the judgment component includes a conflict table and a unit table. It is judged based on the conflict table whether the variable assignment to the SAT formula data clause will cause a conflict, and it is judged whether there is a unit variable based on the unit table.
图2是本公开的一个实施方式的可编程交换机的架构示意图。Figure 2 is an architectural schematic diagram of a programmable switch according to an embodiment of the present disclosure.
如图2所示,可编程交换机包括判断组件(Judgment Component)和搜索组件(Search Component),它利用交换机的并行查找能力来加速。为了避免数据包在控制路径上转发所造成的开销,本公开将判断组件(Judgment Component)和搜索组件(SearchComponent)都部署在数据平面中。As shown in Figure 2, the programmable switch includes a Judgment Component and a Search Component, which use the parallel search capability of the switch to accelerate. In order to avoid the overhead caused by forwarding data packets on the control path, this disclosure deploys both the judgment component (Judgment Component) and the search component (SearchComponent) in the data plane.
判断组件有两个作用,一是判断当前赋值是否会引起冲突,二是判断赋值是否会产生单元变量。通过两个TCAM表在可编程交换机(P4-DPLL)上实现这些功能,第一个TCAM表为冲突表(Conflict Table),用来判断是否有冲突。第二个TCAM表为单元表(Unit Table),用来判断是否有单元变量。本公开通过利用TCAM表并行查找的能力,实现了这两个功能的加速。The judgment component has two functions. One is to judge whether the current assignment will cause a conflict, and the other is to judge whether the assignment will generate unit variables. These functions are implemented on the programmable switch (P4-DPLL) through two TCAM tables. The first TCAM table is the conflict table (Conflict Table), which is used to determine whether there is a conflict. The second TCAM table is the unit table (Unit Table), which is used to determine whether there are unit variables. The present disclosure achieves acceleration of these two functions by utilizing the parallel lookup capability of the TCAM table.
搜索组件的主要作用是搜索可赋值变量,为变量赋值、处理特殊情况。搜索组件的一个关键挑战是它需要记录搜索历史以进行回溯。为了应对这一挑战,本公开使用寄存器和SRAM表在交换机上实现了堆栈结构,这也是本公开在搜索组件中的关键设计。本公开的堆栈能够记录交换机上的搜索历史,并在适当的时候返回正确的位置。The main function of the search component is to search for assignable variables, assign values to variables, and handle special situations. A key challenge with the search component is that it requires recording search history for backtracking. In order to cope with this challenge, this disclosure uses registers and SRAM tables to implement a stack structure on the switch, which is also the key design of this disclosure in the search component. The disclosed stack is able to record the search history on the switch and return the correct location when appropriate.
可编程交换机中搜索组件的核心是一个堆栈,用于在SAT求解期间跟踪搜索历史。基于这个堆栈,搜索组件分为三个部分:搜索模块、回退模块和单元模块。搜索模块和回退模块操作堆栈完成算法的前进和后退。单元模块不操作堆栈,主要实现单元变量的处理。The core of the search component in the programmable switch is a stack that tracks the search history during the SAT solution. Based on this stack, the search component is divided into three parts: search module, fallback module and unit module. The search module and the rollback module operate the stack to complete the forward and backward motion of the algorithm. The unit module does not operate the stack and mainly implements the processing of unit variables.
由于搜索组件很复杂,本公开通过在可编程交换机上多次循环数据包来实现它。本公开使用OP字段来标识可编程交换机在处理数据包时应该做什么,并使用IF_OP_DONE来指示当前操作是否结束。搜索组件的OP字段等控制信息主要放在SEARCH头中,如图9所示。Since the search component is complex, this disclosure implements it by looping the packets multiple times over a programmable switch. This disclosure uses the OP field to identify what the programmable switch should do when processing the packet, and uses IF_OP_DONE to indicate whether the current operation is over. Control information such as the OP field of the search component is mainly placed in the SEARCH header, as shown in Figure 9.
参考图2,其中,在搜索模块(Search Part),可编程交换机将线性查找所有当前变量以找到可赋值的变量。为了避免每次都从头开始搜索,可编程交换机维护一个搜索指针,并确保指针之前的所有变量都已赋值。在找到一个可赋值变量后,可编程交换机将其赋值并生成冲突表的输入。完成这些操作后,搜索模块将数据压入堆栈并将数据传递到冲突表。Referring to Figure 2, in the search module (Search Part), the programmable switch will linearly search all current variables to find assignable variables. To avoid starting the search from scratch every time, the programmable switch maintains a search pointer and ensures that all variables before the pointer have been assigned a value. After finding an assignable variable, the programmable switch assigns its value and generates the input to the conflict table. After completing these operations, the search module pushes the data onto the stack and passes the data to the conflict table.
图2中示出了回退模块(Go-back Part)。数据包发送到冲突表后,数据包将进入回退模块。在这部分,求解器根据冲突表(Conflict Table)匹配决定是开始回退处理还是开始寻找单元变量。如果返回过程开始,求解器将继续在堆栈上回溯并重新赋值变量,直到不再有冲突。如果开关一直返回,直到没有可供选择的变量,求解器将向服务器报告UN-SAT,UN-SAT表示不可满足。如果没有冲突,求解器将开始匹配单元表(Unit Table)。The Go-back Part is shown in Figure 2 . After the packet is sent to the conflict table, the packet will enter the fallback module. In this part, the solver decides whether to start backoff processing or start looking for cell variables based on the conflict table match. If a return process begins, the solver will continue to backtrack on the stack and reassign variables until there are no more conflicts. If the switch keeps returning until there are no variables to choose from, the solver will report UN-SAT to the server, UN-SAT indicating unsatisfiable. If there are no conflicts, the solver will start matching the Unit Table.
图2中示出了单元模块(Unit part)。这部分求解器会根据单元表的结果判断当前变量是否会生成单元变量。如果是这样,单元模块将向搜索模块报告(值得注意的是,有时会有多个单元变量;本公开的求解器中,将选择第一个找到的单元变量)并开始为单元变量赋值。如果没有生成单元变量,可编程交换机修改OP字段,返回第一部分,并寻找下一个可以赋值的变量。The unit part is shown in Figure 2 . This part of the solver will determine whether the current variable will generate a unit variable based on the results of the unit table. If so, the unit module will report to the search module (it is worth noting that sometimes there are multiple unit variables; in the solver of the present disclosure, the first found unit variable will be selected) and start assigning values to the unit variables. If no unit variable is generated, the programmable switch modifies the OP field, returns to the first part, and looks for the next variable that can be assigned a value.
图3是本公开的一个实施方式的可编程交换机的包头数据结构示意图。Figure 3 is a schematic diagram of the packet header data structure of a programmable switch according to an embodiment of the present disclosure.
如图3所示,为了承载SAT求解器所需的数据,本公开设计了两个专用包头,即SEARCH和JUDGMENT。可编程交换机字段位于以太网有效负载内,因此本公开还为可编程交换机保留了一个特殊的Ether Type,即图3中所示的ETH。交换机使用这种类型来调用自定义数据包处理逻辑。As shown in Figure 3, in order to carry the data required by the SAT solver, this disclosure designs two dedicated headers, namely SEARCH and JUDGMENT. The programmable switch field is located within the Ethernet payload, so this disclosure also reserves a special Ether Type for programmable switches, namely ETH shown in Figure 3. The switch uses this type to invoke custom packet processing logic.
图4是现有技术中的SAT问题的冲突表示意图。Figure 4 is a conflict representation diagram of the SAT problem in the prior art.
在SAT公式数据中,如果赋值导致冲突,那一定是因为在当前赋值下有一个子句的计算结果为false。对于SAT公式数据的一个子句,计算为假,意味着子句中的所有字符都计算为假。所以无论一个子句有多长,只有一个赋值使该子句被评估为假,称之为假赋值。In SAT formula data, if an assignment causes a conflict, it must be because there is a clause that evaluates to false under the current assignment. For a clause of SAT formula data, evaluates to false, meaning that all characters in the clause evaluate to false. So no matter how long a clause is, there is only one assignment that causes the clause to evaluate to false, which is called a false assignment.
在图4左侧的公式中,对于第一个子句,只有将x1赋值为假,x2赋值为假,x3赋值为真,该子句的真值才为假。对于第二个子句,只有将x2赋值为false并且将x3赋值为false,此子句才为false。用0表示变量赋值为假,用1表示赋值为真。因为第二个子句不包含x1,所以x1的值记为*,表示任意的值。这样,可以为每个子句生成假赋值。以此类推,可以得到这个公式的假赋值。对于任何SAT公式,都可以得到相应的假赋值。In the formula on the left side of Figure 4, for the first clause, the truth value of the clause is false only if x1 is assigned false, x2 is assigned false, and x3 is assigned true. For the second clause, this clause is false only if x2 is assigned false and x3 is assigned false. Use 0 to indicate that the variable is assigned a false value, and 1 to indicate that the variable is assigned a true value. Because the second clause does not contain x1, the value of x1 is recorded as *, indicating any value. This way, false assignments can be generated for each clause. By analogy, we can get the false assignment of this formula. For any SAT formula, the corresponding false assignment can be obtained.
如果在赋值中出现了假赋值,就可以断定该赋值会导致冲突,可以根据假赋值构造一个冲突赋值匹配表,称为冲突表。If a false assignment occurs in an assignment, it can be concluded that the assignment will cause a conflict. A conflict assignment matching table can be constructed based on the false assignment, which is called a conflict table.
如图4所示,冲突表的key是变量的值,每一位代表一个变量,使用的action是冲突处理函数,冲突表的每一项对应一个子句的假赋值。这样,只要冲突表命中,则当前公式的变量真值赋值中必定至少出现一个子句的假赋值。因此,只要冲突表命中,就可以断言当前赋值会引起冲突,从而可以转入冲突处理。然而,这对于DPLL算法来说是不够的。由于DPLL算法对变量一一赋值,且变量初始值为0,直接使用冲突表进行匹配可能会得到一些错误的结果。As shown in Figure 4, the key of the conflict table is the value of the variable, each bit represents a variable, the action used is the conflict handling function, and each item of the conflict table corresponds to the false assignment of a clause. In this way, as long as the conflict table hits, at least one clause's false assignment must appear in the variable truth assignment of the current formula. Therefore, as long as the conflict table hits, it can be asserted that the current assignment will cause a conflict, so that conflict handling can be transferred. However, this is not enough for the DPLL algorithm. Since the DPLL algorithm assigns values to variables one by one, and the initial value of the variables is 0, directly using the conflict table for matching may get some wrong results.
图5是本公开的一个实施方式的添加赋值字段的SAT冲突表结构示意图。Figure 5 is a schematic structural diagram of a SAT conflict table with an added assignment field according to an embodiment of the present disclosure.
如图5所示,当x1被赋值为false,而x2和x3还没有赋值时,此时key-value为000,会命中冲突表的第二行,从而转向冲突处理。不过此时只赋值了x1,不会造成冲突。As shown in Figure 5, when x1 is assigned false, but x2 and x3 have not yet been assigned a value, the key-value is 000, and the second row of the conflict table will be hit, thus turning to conflict processing. However, only x1 is assigned at this time, so no conflict will occur.
为了处理这个问题,本公开在冲突表中添加了一个key字段作为assigned,如图5所示。赋值字段,即assigned字段,作用是标记当前子句中需要赋值的变量,从而准确匹配当前子句的假赋值是否出现在当前赋值中,其中1表示已赋值,0表示未赋值。以图4中的公式为例,当x1赋值为0,而x2和x3还没有赋值时,此时key-value的值为000,key-assigned的值为100,不会命中冲突表中的任何条目。可以看出,通过添加assigned字段,可以实现当前赋值中假赋值的精确匹配。In order to deal with this problem, this disclosure adds a key field as assigned in the conflict table, as shown in Figure 5. The assignment field, that is, the assigned field, is used to mark the variables that need to be assigned in the current clause, so as to accurately match whether the false assignment of the current clause appears in the current assignment, where 1 means assigned and 0 means not assigned. Taking the formula in Figure 4 as an example, when x1 is assigned a value of 0, but x2 and x3 have not yet been assigned a value, the value of key-value is 000 and the value of key-assigned is 100, which will not hit anything in the conflict table. entry. It can be seen that by adding the assigned field, accurate matching of false assignments in the current assignment can be achieved.
图6是本公开的一个实施方式的判断组件包头结构示意图。Figure 6 is a schematic structural diagram of the header of the judgment component according to an embodiment of the present disclosure.
如图6所示,为了携带变量信息匹配冲突表,本公开使用如图6所示的判断组件包头结构。受限于可编程交换机的计算能力,本公开将VALUE和ASSIGNED字段的长度设置为32位,这恰好是执行计算操作的开关长度的上限。一共有8个包头,加起来可以代表256个变量,正好是一个冲突表的大小。As shown in Figure 6, in order to carry variable information to match the conflict table, the present disclosure uses the judgment component header structure as shown in Figure 6. Limited by the computing power of the programmable switch, the present disclosure sets the length of the VALUE and ASSIGNED fields to 32 bits, which is exactly the upper limit of the switch length to perform computing operations. There are 8 headers in total, which together can represent 256 variables, which is exactly the size of a conflict table.
图7是本公开的公式划分方法的示意图。Figure 7 is a schematic diagram of the formula dividing method of the present disclosure.
在目前的可编程交换机中,TCAM表得大小不超过512位宽。由于在本公开的设计中,冲突表有两个长度相等的字段,value和assigned,因此一个冲突表最多可以同时处理256个变量的冲突情况。为了处理更大的SAT公式,本公开设计了公式划分算法,即通过将一个大的SAT公式数据分成几个小部分,然后将小部分一一放入对应的冲突表中,可以实现可编程交换机对大公式的兼容。In current programmable switches, the TCAM table size is no more than 512 bits wide. Since in the design of this disclosure, the conflict table has two fields of equal length, value and assigned, a conflict table can handle conflicts of up to 256 variables at the same time. In order to handle larger SAT formulas, the present disclosure designs a formula partitioning algorithm, that is, by dividing a large SAT formula data into several small parts, and then putting the small parts into the corresponding conflict table one by one, a programmable switch can be realized Compatibility with large formulas.
本公开的公式划分算法根据表格匹配键的宽度划分整个公式。它遍历整个公式的所有子句,然后根据表是否有足够的容量来决定是否将子句划分到当前匹配表中。如果table的match-key有足够的空闲宽度,并且table未满,则算法将子句划分到当前table。如果表的match-key有足够的空闲宽度,但当前表已满,则算法不会将子句分表;反之亦然。当然,如果一个子句中包含的所有变量都已经包含在表中,而表还没有满,那么该子句也会被包含在表中。The formula partitioning algorithm of the present disclosure divides the entire formula according to the width of the table matching key. It iterates through all clauses of the entire formula and then decides whether to partition the clauses into the current matching table based on whether the table has sufficient capacity. If the table's match-key has sufficient free width and the table is not full, the algorithm divides the clause into the current table. If the match-key of the table has sufficient free width, but the current table is full, the algorithm will not split the clause into tables; and vice versa. Of course, if all the variables contained in a clause are already included in the table, and the table is not full, then the clause will also be included in the table.
如图7中的(a)(b)(c)所示,有两个表,分别为表1(table1)和表2(table2),假设表的匹配键宽度为5位,最多只能包含2个条目。对于第一个子句,由于此时表1为空,因此可以直接放入表1。对于第二个子句,它有一个变量已经包含在表1中,所以如果要放入表1,则需要消耗表1的match-key上的一位宽。此时,表1的match-key仍有足够的空闲位,而表1未满,所以可以将第二个子句放入表1。如果要将第三个子句放入表1,情况也是一样如第二条。但是现在表1中的位宽耗尽,无法再装入新的变量,所以只能将第三个子句放入表2。As shown in (a) (b) (c) in Figure 7, there are two tables, namely table 1 (table1) and table 2 (table2). Assume that the matching key width of the table is 5 bits and can only contain at most 2 entries. For the first clause, since Table 1 is empty at this time, it can be placed directly into Table 1. For the second clause, it has a variable that is already included in table 1, so if you want to put it into table 1, you need to consume one bit of width on the match-key of table 1. At this time, the match-key of table 1 still has enough free bits, but table 1 is not full, so the second clause can be put into table 1. If you want to put the third clause into Table 1, the situation is the same as the second clause. But now the bit width in table 1 is exhausted and no new variables can be loaded, so the third clause can only be put into table 2.
图8是本公开的一个实施方式的单元表结构示意图。Figure 8 is a schematic structural diagram of a unit table according to an embodiment of the present disclosure.
如图8所示,单元表的主要功能是快速判断是否生成了单元子句变量。它在原理上类似于冲突表。对于一个子句而言,如果其变量被赋值得只剩下一个,且所有被赋值的变量计算值都为假,则它将生成一个单元变量。在这种情况下,没有冲突的条件是剩余变量的计算结果为真。即对于一个有k个变量的子句,有k种方式来生成单元变量。As shown in Figure 8, the main function of the unit table is to quickly determine whether unit clause variables are generated. It is similar in principle to a conflict table. A clause generates a unit variable if only one of its variables has been assigned a value and all assigned variables evaluate to false. In this case, the condition for no conflict is that the remaining variables evaluate to true. That is, for a clause with k variables, there are k ways to generate unit variables.
如图8所示,对于具有3个变量的子句,它会生成3个不同的单元赋值。与假赋值一样,当单元赋值出现在当前赋值中时,当前赋值必须在整个SAT公式中生成单元变量。因此,单元赋值转换的单元表可以实现与冲突表类似的功能。当单元表命中时,意味着当前赋值必须在整个SAT公式数据中生成单元变量。As shown in Figure 8, for a clause with 3 variables, it generates 3 different cell assignments. As with false assignment, when a cell assignment occurs within the current assignment, the current assignment must generate the cell variable throughout the SAT formula. Therefore, the cell table of the cell assignment conversion can perform similar functions to the conflict table. When the cell table is hit, it means that the current assignment must generate cell variables throughout the SAT formula data.
冲突表直接返回结果并调用冲突处理函数,但单元表返回一个附加参数,表示该条目生成了哪个单元变量。单元表不需要考虑入口的优先级。对于单元表,当前赋值生成的所有单元变量具有相同的优先级。处理完第一个单元变量后,剩下的单元变量会在以后进入单元表时再次被识别和处理。The conflict table returns the result directly and calls the conflict handling function, but the unit table returns an additional parameter indicating which unit variable was generated by the entry. The unit table does not need to consider the priority of the entry. For cell tables, all cell variables generated by the current assignment have the same priority. After the first unit variable is processed, the remaining unit variables are recognized and processed again when entering the unit table later.
图9是本公开的一个实施方式的搜索组件(SEARCH)包头结构示意图。Figure 9 is a schematic diagram of the header structure of the search component (SEARCH) according to an embodiment of the present disclosure.
如图9所示,搜索组件(SEARCH)包头包含字段及对应含义如下。IF_CONTINUE和IF_CONFLICT是两个表(冲突表和单元表)的返回值,用以记录是否有冲突;HAVE_DATA是用来判断包头中当前是否有附带公式信息;VALUE_TO_SET是用来记录变量应该赋值为真还是假;FIND_OR_UNIT记录当前赋值的变量是否是单元变量;OP记录当前操作是什么;IF_OP_DONE记录当前操作是否完成;TABLE_INDEX,SEGMENT_INDEX,POSITION_INDEX这三个字段是用来记录当前操作变量的在公式中的位置的索引;ID_NOW记录当前变量的id;ID_ALL记录当前公式一共有多少变量;LAYER记录当前搜索空间在堆栈上的层数;CLAUSE_ID和VARIABLE_ID是运算辅助变量,提供辅助变量的存储空间。As shown in Figure 9, the search component (SEARCH) header contains fields and their corresponding meanings as follows. IF_CONTINUE and IF_CONFLICT are the return values of the two tables (conflict table and unit table) to record whether there is a conflict; HAVE_DATA is used to determine whether there is currently accompanying formula information in the header; VALUE_TO_SET is used to record whether the variable should be assigned a value of true or not False; FIND_OR_UNIT records whether the currently assigned variable is a unit variable; OP records what the current operation is; IF_OP_DONE records whether the current operation is completed; the three fields TABLE_INDEX, SEGMENT_INDEX, and POSITION_INDEX are used to record the position of the current operation variable in the formula Index; ID_NOW records the id of the current variable; ID_ALL records how many variables there are in the current formula; LAYER records the number of layers of the current search space on the stack; CLAUSE_ID and VARIABLE_ID are operation auxiliary variables, providing storage space for auxiliary variables.
图10是本公开的一个实施方式的堆栈结构示意图。Figure 10 is a schematic diagram of a stack structure according to an embodiment of the present disclosure.
如图10所示,把栈的get和push操作放在同一个stage上(实际上由于原子性的限制,只能放在同一个stage上),但是执行这两个动作所需的条件是不同的。当OP为213时,匹配表命中,进行push操作。此时无法执行获取操作。当OP为210时,匹配表命中,执行get操作。此时无法执行推送操作。如果求解器需要在推送操作后立即获取数据,则需要修改op字段并将数据包重新循环回解析器。As shown in Figure 10, the get and push operations of the stack are placed on the same stage (actually, due to atomicity restrictions, they can only be placed on the same stage), but the conditions required to execute these two actions are different. of. When the OP is 213, the matching table is hit and the push operation is performed. The acquisition operation cannot be performed at this time. When the OP is 210, the matching table is hit and the get operation is performed. Push operations cannot be performed at this time. If the solver needs to get the data immediately after the push operation, it needs to modify the op field and recycle the packet back to the resolver.
搜索组件中各部分的功能相对独立,分别处理冲突表和单元表的输入输出。The functions of each part in the search component are relatively independent and handle the input and output of the conflict table and unit table respectively.
图11是本公开的一个实施方式的搜索组件工作流程示意图。Figure 11 is a schematic diagram of the search component workflow according to an embodiment of the present disclosure.
如图11所示,搜索组件工作流程包括以下步骤。As shown in Figure 11, the search component workflow includes the following steps.
第一步,搜索模块(Search Part)搜索未赋值的变量,并找到x1,将x1赋值为false,将结果压入堆栈并将其输入冲突表。In the first step, the search module (Search Part) searches for unassigned variables, finds x1, assigns x1 to false, pushes the result onto the stack and enters it into the conflict table.
第二步,由于没有冲突,所以回退模块(Go-back Part)将当前赋值输入到单元表中。In the second step, since there is no conflict, the go-back module (Go-back Part) inputs the current assignment into the unit table.
第三步,进入单元模块(Unit Part)后,由于生成了单元变量,就开始处理单元变量。In the third step, after entering the unit module (Unit Part), since the unit variables are generated, the processing of the unit variables begins.
第四步,搜索模块接收单元模块的数据,并将其压入堆栈。In the fourth step, the search module receives the data from the unit module and pushes it onto the stack.
第五步,由于当前赋值会导致公式冲突,所以回退模块(Go-back Part)在第五步从堆栈中获取历史数据,并返回到搜索模块开始重新赋值。In the fifth step, since the current assignment will cause a formula conflict, the go-back module (Go-back Part) obtains historical data from the stack in the fifth step and returns to the search module to start reassignment.
对于本公开的可编程交换机处理SAT问题的数据处理方法,可以通过以下几个验证条件进行实现,包括算法实现、度量方法实验平台、数据集、比较方法几个方面。The disclosed data processing method for the programmable switch to handle the SAT problem can be implemented through the following verification conditions, including algorithm implementation, measurement method experimental platform, data set, and comparison method.
在Barefoot Tofino交换机上实现了一个本公开的可编程交换机。此外,还实现了本公开的可编程交换机的另外一个版本P Server。P Server通过在服务器上部署搜索单元,仅在可编程交换机上部署判断过程,通过可编程交换机与服务器之间的交互来处理SAT问题。服务器将首先搜索变量。当需要进行判断时,P Server会通过DPDK将携带当前赋值信息的数据包发送给可编程交换机进行判断。通过这种方式,可编程交换机和服务器不断交互。最后,服务器将获得SAT问题的数据处理结果。为了更好地评估本公开的可编程交换机的性能,设计了一个完全在服务器端实现的DPLL算法,称为Server。A programmable switch of the present disclosure is implemented on a Barefoot Tofino switch. In addition, another version P Server of the programmable switch of the present disclosure is also implemented. P Server handles the SAT problem through the interaction between the programmable switch and the server by deploying the search unit on the server and only deploying the judgment process on the programmable switch. The server will search for variables first. When judgment is needed, P Server will send the data packet carrying the current assignment information to the programmable switch through DPDK for judgment. In this way, programmable switches and servers interact continuously. Finally, the server will obtain the data processing results of the SAT problem. In order to better evaluate the performance of the programmable switch of the present disclosure, a DPLL algorithm implemented entirely on the server side is designed, called Server.
MathSAT也是基于DPLL算法实现的,但是添加了许多对于特殊情况的优化;Z3则是基于CDCL算法设计的。MathSAT is also implemented based on the DPLL algorithm, but adds many optimizations for special situations; Z3 is designed based on the CDCL algorithm.
在度量方法实验平台方面,通过一个Barefoot Tofino交换机和一个带有2个Intel Xeon Silver 4210R CPU和128GB内存的服务器来实现P4-DPLL和P Server。此外,使用一台带有2个Intel Xeon Silver 4210R CPU和128GB内存的服务器来实现Server。In terms of the measurement method experimental platform, P4-DPLL and P Server are implemented through a Barefoot Tofino switch and a server with 2 Intel Xeon Silver 4210R CPUs and 128GB memory. Additionally, a server with 2 Intel Xeon Silver 4210R CPUs and 128GB of memory is used to implement Server.
在数据集方面,从两个公共数据集SATLIB-Benchmark Problems和TheInternational SAT Competition中收集SAT问题。这两个数据集中共有46787个CNF范式,其中46685个可满足,102个不可满足。这些范式中的变量范围为20到63624,子句范围为80到368352。In terms of data sets, SAT problems are collected from two public data sets, SATLIB-Benchmark Problems and TheInternational SAT Competition. There are a total of 46,787 CNF paradigms in these two datasets, of which 46,685 are satisfiable and 102 are unsatisfiable. Variables in these paradigms range from 20 to 63624, and clauses range from 80 to 368352.
在同类方法比较方面,为了验证本公开的可编程交换机的性能,使用了5种方法进行比较,分别为:P4-DPLL、P Server、Server、Z3和Math SAT。Math SAT和Z3是处理SAT问题最常用的算法,在当前应用程序中具有良好的性能。其中,在同一数据集上测试和分析了不同SAT算法的解算时间。为了公平地比较每个算法的耗时,此处的耗时不包括预处理所花费的时间。为了分析每种方法之间的时间优势区域,进一步将求解时间分为搜索时间和判断时间。In terms of comparison of similar methods, in order to verify the performance of the programmable switch of the present disclosure, five methods were used for comparison, namely: P4-DPLL, P Server, Server, Z3 and Math SAT. Math SAT and Z3 are the most commonly used algorithms for handling SAT problems and have good performance in current applications. Among them, the solution times of different SAT algorithms were tested and analyzed on the same data set. In order to fairly compare the time consumption of each algorithm, the time consumption here does not include the time spent in preprocessing. In order to analyze the time advantage area between each method, the solution time is further divided into search time and judgment time.
在以上验证准备基础上,对于本公开的数据处理方法,从以下几个方面进行验证:总体性能、求解不同大小的公式的性能及在判断时间和搜索时间的耗时比较。Based on the above verification preparations, the disclosed data processing method was verified from the following aspects: overall performance, performance in solving formulas of different sizes, and time-consuming comparison of judgment time and search time.
图12是本公开的一个实施方式的可编程交换机的性能评估结果示意图。Figure 12 is a schematic diagram of performance evaluation results of a programmable switch according to an embodiment of the present disclosure.
对从数据集中收集的公式的求解时间进行统计。图12中(a)绘制了CDF,图12中(b)给出了每种方法的所有测试用例的90%分位数。可以看到,与在CPU上实现DPLL算法相比,本公开的可编程交换机在所有测试用例的90%分位数上分别将求解时间提高了101倍和16倍。此外,从图12中(a)可以看出,在所有测试用例的50%分位数上,本公开的可编程交换机的数据处理方法的处理时间都快于Math SAT和Z3。Math SAT和Z3有很大一部分实例比P4-DPLL快的原因是Z3使用CDCL,它本质上比DPLL快得多,Math SAT在DPLL上采用了许多实例相关的优化,例如变量消除、包含子句删除和反向包含。Statistics on the solution time of formulas collected from a data set. The CDF is plotted in Figure 12(a) and the 90% quantile of all test cases for each method is given in Figure 12(b). It can be seen that compared with implementing the DPLL algorithm on the CPU, the programmable switch of the present disclosure improves the solution time by 101 times and 16 times respectively on the 90% quantile of all test cases. In addition, it can be seen from (a) in Figure 12 that the processing time of the data processing method of the programmable switch of the present disclosure is faster than Math SAT and Z3 at the 50% quantile of all test cases. The reason why Math SAT and Z3 are faster than P4-DPLL for a large part of the instances is that Z3 uses CDCL, which is inherently much faster than DPLL. Math SAT adopts many instance-related optimizations on DPLL, such as variable elimination, inclusion clauses Remove and reverse include.
为了分析不同大小的公式对SAT求解器性能的影响,根据变量的数量和子句的数量将数据集中的公式分为8个不同的类别。针对不同类型的公式,分别分析不同SAT求解器的评价结果。图12中(c)示出了不同公式大小的90%分位数案例的求解时间。随着公式中变量数量的增加,P Server版SAT求解器、Server版SAT求解器、Z3的处理时间显著增加。MathSAT的求解时间和本公开的可编程交换机的处理时间没有显着差异。此外,当公式较小时,本公开的可编程交换机在性能上比其他求解器具有明显优势。当公式比较大时,本公开的可编程交换机的性能与Math SAT相近。In order to analyze the impact of formulas of different sizes on the performance of the SAT solver, the formulas in the dataset were divided into 8 different categories based on the number of variables and the number of clauses. For different types of formulas, the evaluation results of different SAT solvers are analyzed separately. Figure 12(c) shows the solution time for the 90% quantile case for different formula sizes. As the number of variables in the formula increases, the processing time of P Server version SAT solver, Server version SAT solver, and Z3 increases significantly. There is no significant difference between the solution time of MathSAT and the processing time of the programmable switch of the present disclosure. Furthermore, the programmable switch of the present disclosure has significant performance advantages over other solvers when the formula is small. When the formula is relatively large, the performance of the programmable switch of the present disclosure is similar to Math SAT.
对于处理时间,将其进一步划分为搜索时间和判断时间,从而分析各个求解器之间的时间优势区域。For the processing time, it is further divided into search time and judgment time to analyze the time advantage area between each solver.
图12中(d)给出了每种方法的判断时间和搜索时间。本公开的可编程交换机求解器判断时间最短,Server版SAT求解器判断时间最长。这是因为本公开的可编程交换机使用可编程开关的表格进行判断,可以在线性时间内得到判断结果。P Server版SAT求解器虽然也使用可编程交换机来判断赋值是否冲突,但需要通过服务器频繁收发报文才能得到交换机的判断结果。所以本公开的可编程交换机的判断时间比P Server版SAT求解器的判断时间要短。可以看到,与P Server版SAT求解器和Server版SAT求解器相比,本公开的可编程交换机将判断速度分别提高了246倍和35倍。此外,可以看到本公开的可编程交换机求解器的判断时间比例最大。这是因为本公开的可编程交换机使用堆栈实现算法,每次检查都需要多次调用堆栈。这增加了搜索时间,从而减少了判断时间。(d) in Figure 12 shows the judgment time and search time of each method. The disclosed programmable switch solver has the shortest judgment time, and the Server version SAT solver has the longest judgment time. This is because the programmable switch of the present disclosure uses a table of programmable switches for judgment, and can obtain the judgment result in linear time. Although the P Server version of the SAT solver also uses a programmable switch to determine whether assignments conflict, it requires frequent sending and receiving of messages through the server to obtain the switch's determination results. Therefore, the judgment time of the programmable switch of the present disclosure is shorter than that of the P Server version SAT solver. It can be seen that compared with the P Server version SAT solver and the Server version SAT solver, the programmable switch of the present disclosure increases the judgment speed by 246 times and 35 times respectively. In addition, it can be seen that the programmable switch solver of the present disclosure has the largest proportion of decision time. This is because the programmable switch of the present disclosure uses a stack to implement the algorithm, and each check requires multiple calls to the stack. This increases search time and thus reduces decision time.
综上可知,本公开的可编程交换机(P4-DPLL)与P Server版SAT求解器和Server版SAT求解器相比有显着的性能提升。此外,在所有测试用例的50%分位数上,P4-DPLL的SAT求解时间快于Math SAT和Z3。具体来说,P4-DPLL对于小公式有明显的性能优势。对于相对较大的公式,P4-DPLL求解器可与目前流行的Math SAT求解器相媲美。此外,P4-DPLL的判断时间明显小于PServer版SAT求解器和Server版SAT求解器,这是由于使用了可编程交换机中的表来加快冲突的判断。In summary, it can be seen that the programmable switch (P4-DPLL) of the present disclosure has significant performance improvement compared with the P Server version SAT solver and the Server version SAT solver. Furthermore, P4-DPLL’s SAT solution time is faster than Math SAT and Z3 at the 50% quantile of all test cases. Specifically, P4-DPLL has obvious performance advantages for small formulas. For relatively large formulas, the P4-DPLL solver is comparable to the currently popular Math SAT solver. In addition, the judgment time of P4-DPLL is significantly shorter than that of the PServer version SAT solver and the Server version SAT solver. This is due to the use of tables in the programmable switch to speed up conflict judgment.
综上可知,本公开在Barefoot Tofino交换机和商用服务器上实现了SAT解析器,并广泛评估了它的性能。结果表明,与基于CPU的DPLL实现相比,本公开的可编程交换机(P4-DPLL)在所有测试用例的90%分位数上将处理速度提高了101倍。In summary, this disclosure implements a SAT parser on Barefoot Tofino switches and commodity servers, and extensively evaluates its performance. The results show that compared to the CPU-based DPLL implementation, the disclosed programmable switch (P4-DPLL) improves processing speed by 101 times at the 90% quantile of all test cases.
在本说明书的描述中,参考术语“一个实施方式/方式”、“一些实施方式/方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施方式/方式或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施方式/方式或示例中。在本说明书中,对上述术语的示意性表述不必须的是相同的实施方式/方式或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式/方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式/方式或示例以及不同实施方式/方式或示例的特征进行结合和组合。In the description of this specification, reference to the description of the terms "one embodiment/mode", "some embodiments/ways", "example", "specific example", or "some examples", etc. is meant to be in conjunction with the description of the embodiment/mode. or examples describe specific features, structures, materials, or characteristics that are included in at least one embodiment/mode or example of this application. In this specification, the schematic expressions of the above terms are not necessarily the same embodiment/mode or example. Furthermore, the specific features, structures, materials or characteristics described may be combined in any suitable manner in any one or more embodiments or examples. Furthermore, those skilled in the art may combine and combine different embodiments/ways or examples and features of different embodiments/ways or examples described in this specification unless they are inconsistent with each other.
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。In addition, the terms “first” and “second” are used for descriptive purposes only and cannot be understood as indicating or implying relative importance or implicitly indicating the quantity of indicated technical features. Therefore, features defined as "first" and "second" may explicitly or implicitly include at least one of these features. In the description of this application, "plurality" means at least two, such as two, three, etc., unless otherwise expressly and specifically limited.
本领域的技术人员应当理解,上述实施方式仅仅是为了清楚地说明本公开,而并非是对本公开的范围进行限定。对于所属领域的技术人员而言,在上述公开的基础上还可以做出其它变化或变型,并且这些变化或变型仍处于本公开的范围内。Those skilled in the art should understand that the above-mentioned embodiments are only for clearly illustrating the present disclosure, but are not intended to limit the scope of the present disclosure. For those skilled in the art, other changes or modifications can be made based on the above disclosure, and these changes or modifications are still within the scope of the present disclosure.
Claims (6)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210928481.7A CN115334019B (en) | 2022-08-03 | 2022-08-03 | Data processing method and programmable switch for handling SAT problem by programmable switch |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210928481.7A CN115334019B (en) | 2022-08-03 | 2022-08-03 | Data processing method and programmable switch for handling SAT problem by programmable switch |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115334019A CN115334019A (en) | 2022-11-11 |
CN115334019B true CN115334019B (en) | 2023-09-26 |
Family
ID=83921950
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210928481.7A Active CN115334019B (en) | 2022-08-03 | 2022-08-03 | Data processing method and programmable switch for handling SAT problem by programmable switch |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115334019B (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356519B1 (en) * | 2003-02-28 | 2008-04-08 | Cadence Design Systems, Inc. | Method and system for solving satisfiability problems |
CN107749802A (en) * | 2017-10-12 | 2018-03-02 | 北京邮电大学 | A kind of experiment porch and experimental method of the processing of supported protocol extraneous data bag |
CN110430094A (en) * | 2019-07-31 | 2019-11-08 | 西安交通大学 | Detection packet generation method based on active probe in a kind of SDN |
CN112367278A (en) * | 2020-11-03 | 2021-02-12 | 清华大学 | Cloud gateway system based on programmable data switch and message processing method thereof |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7904867B2 (en) * | 2007-04-04 | 2011-03-08 | Synopsys, Inc. | Integrating a boolean SAT solver into a router |
-
2022
- 2022-08-03 CN CN202210928481.7A patent/CN115334019B/en active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7356519B1 (en) * | 2003-02-28 | 2008-04-08 | Cadence Design Systems, Inc. | Method and system for solving satisfiability problems |
CN107749802A (en) * | 2017-10-12 | 2018-03-02 | 北京邮电大学 | A kind of experiment porch and experimental method of the processing of supported protocol extraneous data bag |
CN110430094A (en) * | 2019-07-31 | 2019-11-08 | 西安交通大学 | Detection packet generation method based on active probe in a kind of SDN |
CN112367278A (en) * | 2020-11-03 | 2021-02-12 | 清华大学 | Cloud gateway system based on programmable data switch and message processing method thereof |
Non-Patent Citations (1)
Title |
---|
基于形式化描述的交换机网络自动配置策略的设计与实现;杨家海;姜宁;安常青;李福亮;;清华大学学报(自然科学版)(第08期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN115334019A (en) | 2022-11-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
De Alfaro et al. | Symbolic model checking of probabilistic processes using MTBDDs and the Kronecker representation | |
JP4028107B2 (en) | Method of hardware verification and expression by decomposition and division | |
Eppstein | The traveling salesman problem for cubic graphs | |
CN104915717B (en) | Data processing method, Analysis of Knowledge Bases Reasoning method and relevant apparatus | |
US7499941B2 (en) | Pipeline regular expression matching | |
CN117201138B (en) | A smart contract vulnerability detection method, system and device based on vulnerability subgraphs | |
Piipponen et al. | Constructing minimal coverability sets | |
CN115334019B (en) | Data processing method and programmable switch for handling SAT problem by programmable switch | |
US7356519B1 (en) | Method and system for solving satisfiability problems | |
CN111274457B (en) | Network graph segmentation method and storage medium | |
Groote et al. | Lowerbounds for bisimulation by partition refinement | |
Kuo et al. | A memory-efficient TCAM coprocessor for IPv4/IPv6 routing table update | |
CN105956275A (en) | Method for calculating optimum calibration on basis of logic Petri network | |
Roşu | An effective algorithm for the membership problem for extended regular expressions | |
Biró et al. | BaW 1.0-A Problem Specific SAT Solver for Effective Strong Connectivity Testing in Sparse Directed Graphs | |
Baumeister et al. | Complexity of sequential rules in judgment aggregation | |
Abdulla et al. | Guiding word equation solving using graph neural networks (extended technical report) | |
Gao et al. | Arboricity and spanning‐tree packing in random graphs | |
Adamson et al. | $ k $-Universality of Regular Languages | |
CN113379051B (en) | Automatic theorem proving method, device and storage medium based on unit result deduction | |
van der Hoog et al. | Simple Universally Optimal Dijkstra | |
CN118396133B (en) | Quantum bit mapping algorithm based on dynamic self-adaptive blocking and subgraph isomorphism | |
CN119783297B (en) | Power grid equipment topology node branch model generation method and system based on graph database | |
Hung | Optimal vertex ranking of block graphs | |
Amarilli et al. | Linear Time Subsequence and Supersequence Regex Matching |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |