332 karma · joined November 12, 2012
Professor at UESTC, works on theoretical computer science and operations research.
Research interests: algorithms, combinatorial optimization, computational geometry and problem-solving in general.
This is useful for people with multiple unrelated employers with 401k plans.
This min-cut is different from the max-flow min-cut theorem's min-cut. This is what referred to as global min-cut, which does not fix the terminals. In max-flow min-cut theorem, it is about disconnecting two fixed vertices s and t. In the global min-cut, it is about disconnecting two arbitrary vertices.
Source: thesis was on hypergraph min-cut
Good thing I've applied for an account with Mercury. Waiting through the long verification process...
But this definitely get me to think twice about using fintech banks. It could get closed down due to an acquisition of their parent bank.
I found all these similar tools has the problem that there is exactly one expression per line.
Is there any exploration of this feature: have the computed number shown next to the expression.
I had this problem while using soulver, too. I had a lot of artificial line breaks. For calculations it is pretty good, but it is pretty horrible when I present it to someone else.
- get to the webpage (selenium)
- do some clicks to expand certain information (selenium)
- save the html (selenium)
- and parse (selectorlib)
For me, almost everything can be done by css selectors or xpath. Selectorlib allows you to write just a tree of css selectors. The css selectors in the children only apply to currently selected objects.
The nice thing is the magical browser tool of the same name, which makes the first iteration much easier. However, the browser tool output and the python code does not always match, that causes some headaches. Overall, it cut down like 90% of the code and move it into a configuration.
I write about algorithms.
You might like it if you like algorithmic puzzles. Some of the puzzles are actually in leetcode, but the solutions in the blog are through the viewpoint of a theoretical cs researcher.
I tried a few ways and eventually giving up. I just have to live with not having accurate counts.
1. I try to make my own food using common ingredients. It failed in a couple of weeks because I do prefer to not spend that much time on making food.
2. Eating at restaurants is especially difficult. Even if you bring a scale with you. Like if you are given some Chinese dish where all the things are mixed together. I give up and go with "Chinese buffet" option in myfitnesspal.
3. Ironically, fast food places do have calories listed, and that justifies some of my visits...
The discovery of many things is done by people with a genius-level intellect. Like calculus, probability, etc. but I can certainly ask mechanical engineers calculus problems, or data scientist probability problems.
It is certainly difficult for someone who never seen anything related to it. But for people who had the background, it is not unreasonable. I think this kind of problem is biased toward people who
1. had a good (theoretical) CS education, or 2. solved lots of leetcode problems so they can just do "pattern matching".
Most of the time, the only thing I care about is where people come from, and which page gets accessed most often. I feel this should already be enough information for one to understand what is a popular topic.
I'm actually still super surprised that Fathom's javascript code is 1.6kb. Can't it be lighter?
We have also prepared a journal version that combines those papers, and with some extra results. whomever interested can contact me.
Given a set of n strings, each of length m, find if there is a pair that differs in exactly one position.
It was not trivial to come up with an optimal and elementary O(nm) time algorithm. (by elementary, I mean something does not need a few hours to implement).
I've seen people getting running times of the form O(n^2m), O(n(n+m)) and O(nm^2) on multiple Reddit posts, and was surprised at all kind of different approaches.
1. Is LD(L,k) regular? (yes)
2. How hard is it to construct a regular expression(or DFA, NFA) of LD(L,k) given a regular expression(or DFA, NFA) of L? (probably it is something k times the original size in terms of NFA)
I believe a constant k here does not make much sense. since we might match super long strings, then having more errors seems ok. Maybe we can ask for the following:
LDM(L,ε) is the set of strings, such that if x in LDM(L,ε), then there is a y in L, such that distance between x and y is at most ε|y|.
LDM(L,ε) does not seem to be a regular language.
Also a shameless plug. My friend and I came up with this pseudo-polynomial time algorithm for subset sum that can be taught in a single session. It is faster than the standard dynamic programming algorithm. https://arxiv.org/abs/1807.08248
I intend to keep on researching since research is fun. But writing itself is not as much fun, so I wonder if I will try to publish as much.
1. Collaboration. If you look at my publication records, I only have a single paper where I am the sole author, and I made sure a few very knowledgeable friends read it. So find someone sharing similar interests and talk to them. Once a collaboration starts, it is much easier to get going.
2. Branch out. Recently, I improve algorithms in areas (more applied operations research) close to mine (theoretical x {computer science, combinatorial optimization}). This includes 3 of the papers I'm preparing. It only took a few hours to realize improvements are possible, although it takes much longer to polish and present. It also leads me to an interesting problem in my own field.
3. Giving talks. It is probably much easier to have an opportunity to give tech talks. Giving the talk itself forces you to organize your thought well. I often find better ways to organize my writing after I've given the presentation. (I really should give talks before writing the paper...