The attestations aggreagtion problem can be broken down into two parts:
Me and Geemo agreed that the best way to split the tasks would be for him to handle the aggreagation stage, while I would be working on the packing stage. As I mentioned in my previous update, most of my research was targeted at the Aggregation Stage and the Bron-Kerbosh algorithm, so started afresh and began my research into the Packing Stage.
Most of the week was spent reading the code in the operation_pool folder, that deals with storing and processing attestations.
The existing implementation in lighthouse can be found here, which is an implementation of the Greedy Algorithm to the Max Coverage Problem. This approach guarantees the worst case outcome to be within \(1-\dfrac{1}{e}\) by ratio of the optimal solution, and has been working fairly well in practice so far.
The solution presented by Satalia, is assuming a set \(A^*\) containing the maximal non-dominated attestations has been calculated by the Aggregation Stage, is to represent the Maximum Coverage problem as a Mixed Integer Problem, and then use a MIP solver (like CBC) to produce a solution. While this solution theoretically works, experimental results from Satalia showed that it many cases the solver might be too slow to be used in a production environment.
As suggested by the paper, one way to speed things up is to use a more sophisticated solver (like Gurobi), but these tend to be proprietary. This is something which might not be desirable, therfore this path is not explored.
The paper then explores two possibilities of speeding up this calculation.
Both of these approaches have not been experimentally tested yet, and this is what I plan to do in the upcoming weeks. The main challenge would be to come up with an implementation which can produce the optimal solution in a reasonable amount of time, in the best case on all systems but at the very least on higher end systems (through a flag).
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing